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>

authored by Oleg Nesterov and committed by Tejun Heo 47dd5be2 66f41d4c

+1 -1
+1 -1
kernel/workqueue.c
··· 774 774 { 775 775 if (del_timer_sync(&dwork->timer)) { 776 776 struct cpu_workqueue_struct *cwq; 777 - cwq = wq_per_cpu(keventd_wq, get_cpu()); 777 + cwq = wq_per_cpu(get_wq_data(&dwork->work)->wq, get_cpu()); 778 778 __queue_work(cwq, &dwork->work); 779 779 put_cpu(); 780 780 }