workqueue: flush_delayed_work: keep the original workqueue for re-queueing
flush_delayed_work() always uses keventd_wq for re-queueing, but it should use the workqueue this dwork was queued on. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
66f41d4c5c
commit
47dd5be2d6
|
@ -774,7 +774,7 @@ void flush_delayed_work(struct delayed_work *dwork)
|
|||
{
|
||||
if (del_timer_sync(&dwork->timer)) {
|
||||
struct cpu_workqueue_struct *cwq;
|
||||
cwq = wq_per_cpu(keventd_wq, get_cpu());
|
||||
cwq = wq_per_cpu(get_wq_data(&dwork->work)->wq, get_cpu());
|
||||
__queue_work(cwq, &dwork->work);
|
||||
put_cpu();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue