提交 629ec217 编写于 作者: T Thomas Gleixner 提交者: openeuler-sync-bot

timers: Get rid of del_singleshot_timer_sync()

mainline inclusion
from mainline-v6.2-rc1
commit 9a5a3056
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I7R8WG

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9a5a305686971f4be10c6d7251c8348d74b3e014

--------------------------------

del_singleshot_timer_sync() used to be an optimization for deleting timers
which are not rearmed from the timer callback function.

This optimization turned out to be broken and got mapped to
del_timer_sync() about 17 years ago.

Get rid of the undocumented indirection and use del_timer_sync() directly.

No functional change.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Tested-by: NGuenter Roeck <linux@roeck-us.net>
Reviewed-by: NJacob Keller <jacob.e.keller@intel.com>
Reviewed-by: NAnna-Maria Behnsen <anna-maria@linutronix.de>
Link: https://lore.kernel.org/r/20221123201624.706987932@linutronix.de

 Conflicts:
	net/sunrpc/xprt.c
Signed-off-by: NYu Liao <liaoyu15@huawei.com>
(cherry picked from commit fe99d43f)
上级 e335f603
...@@ -156,7 +156,7 @@ ssize_t tpm_common_read(struct file *file, char __user *buf, ...@@ -156,7 +156,7 @@ ssize_t tpm_common_read(struct file *file, char __user *buf,
out: out:
if (!priv->response_length) { if (!priv->response_length) {
*off = 0; *off = 0;
del_singleshot_timer_sync(&priv->user_read_timer); del_timer_sync(&priv->user_read_timer);
flush_work(&priv->timeout_work); flush_work(&priv->timeout_work);
} }
mutex_unlock(&priv->buffer_mutex); mutex_unlock(&priv->buffer_mutex);
...@@ -263,7 +263,7 @@ __poll_t tpm_common_poll(struct file *file, poll_table *wait) ...@@ -263,7 +263,7 @@ __poll_t tpm_common_poll(struct file *file, poll_table *wait)
void tpm_common_release(struct file *file, struct file_priv *priv) void tpm_common_release(struct file *file, struct file_priv *priv)
{ {
flush_work(&priv->async_work); flush_work(&priv->async_work);
del_singleshot_timer_sync(&priv->user_read_timer); del_timer_sync(&priv->user_read_timer);
flush_work(&priv->timeout_work); flush_work(&priv->timeout_work);
file->private_data = NULL; file->private_data = NULL;
priv->response_length = 0; priv->response_length = 0;
......
...@@ -291,7 +291,7 @@ xpc_partition_disengaged(struct xpc_partition *part) ...@@ -291,7 +291,7 @@ xpc_partition_disengaged(struct xpc_partition *part)
/* cancel the timer function, provided it's not us */ /* cancel the timer function, provided it's not us */
if (!in_interrupt()) if (!in_interrupt())
del_singleshot_timer_sync(&part->disengage_timer); del_timer_sync(&part->disengage_timer);
DBUG_ON(part->act_state != XPC_P_AS_DEACTIVATING && DBUG_ON(part->act_state != XPC_P_AS_DEACTIVATING &&
part->act_state != XPC_P_AS_INACTIVE); part->act_state != XPC_P_AS_INACTIVE);
......
...@@ -1116,8 +1116,8 @@ static int hfa384x_usbctlx_complete_sync(struct hfa384x *hw, ...@@ -1116,8 +1116,8 @@ static int hfa384x_usbctlx_complete_sync(struct hfa384x *hw,
if (ctlx == get_active_ctlx(hw)) { if (ctlx == get_active_ctlx(hw)) {
spin_unlock_irqrestore(&hw->ctlxq.lock, flags); spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
del_singleshot_timer_sync(&hw->reqtimer); del_timer_sync(&hw->reqtimer);
del_singleshot_timer_sync(&hw->resptimer); del_timer_sync(&hw->resptimer);
hw->req_timer_done = 1; hw->req_timer_done = 1;
hw->resp_timer_done = 1; hw->resp_timer_done = 1;
usb_kill_urb(&hw->ctlx_urb); usb_kill_urb(&hw->ctlx_urb);
......
...@@ -171,9 +171,9 @@ static void prism2sta_disconnect_usb(struct usb_interface *interface) ...@@ -171,9 +171,9 @@ static void prism2sta_disconnect_usb(struct usb_interface *interface)
*/ */
prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable); prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
del_singleshot_timer_sync(&hw->throttle); del_timer_sync(&hw->throttle);
del_singleshot_timer_sync(&hw->reqtimer); del_timer_sync(&hw->reqtimer);
del_singleshot_timer_sync(&hw->resptimer); del_timer_sync(&hw->resptimer);
/* Unlink all the URBs. This "removes the wheels" /* Unlink all the URBs. This "removes the wheels"
* from the entire CTLX handling mechanism. * from the entire CTLX handling mechanism.
......
...@@ -196,8 +196,6 @@ extern int try_to_del_timer_sync(struct timer_list *timer); ...@@ -196,8 +196,6 @@ extern int try_to_del_timer_sync(struct timer_list *timer);
# define del_timer_sync(t) del_timer(t) # define del_timer_sync(t) del_timer(t)
#endif #endif
#define del_singleshot_timer_sync(t) del_timer_sync(t)
extern void init_timers(void); extern void init_timers(void);
extern void run_local_timers(void); extern void run_local_timers(void);
struct hrtimer; struct hrtimer;
......
...@@ -1875,7 +1875,7 @@ signed long __sched schedule_timeout(signed long timeout) ...@@ -1875,7 +1875,7 @@ signed long __sched schedule_timeout(signed long timeout)
timer_setup_on_stack(&timer.timer, process_timeout, 0); timer_setup_on_stack(&timer.timer, process_timeout, 0);
__mod_timer(&timer.timer, expire, MOD_TIMER_NOTPENDING); __mod_timer(&timer.timer, expire, MOD_TIMER_NOTPENDING);
schedule(); schedule();
del_singleshot_timer_sync(&timer.timer); del_timer_sync(&timer.timer);
/* Remove the timer from the object tracker */ /* Remove the timer from the object tracker */
destroy_timer_on_stack(&timer.timer); destroy_timer_on_stack(&timer.timer);
......
...@@ -1143,7 +1143,7 @@ xprt_request_enqueue_receive(struct rpc_task *task) ...@@ -1143,7 +1143,7 @@ xprt_request_enqueue_receive(struct rpc_task *task)
spin_unlock(&xprt->queue_lock); spin_unlock(&xprt->queue_lock);
/* Turn off autodisconnect */ /* Turn off autodisconnect */
del_singleshot_timer_sync(&xprt->timer); del_timer_sync(&xprt->timer);
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册