From: Oleg Nesterov Add might_sleep() checks to flush_xxx() functions. Signed-off-by: Oleg Nesterov Signed-off-by: Andrew Morton --- kernel/workqueue.c | 4 ++++ 1 files changed, 4 insertions(+) diff -puN kernel/workqueue.c~workqueue-dont-save-interrupts-in-run_workqueue-update-2 kernel/workqueue.c --- a/kernel/workqueue.c~workqueue-dont-save-interrupts-in-run_workqueue-update-2 +++ a/kernel/workqueue.c @@ -393,6 +393,8 @@ static void flush_cpu_workqueue(struct c */ void fastcall flush_workqueue(struct workqueue_struct *wq) { + might_sleep(); + if (is_single_threaded(wq)) flush_cpu_workqueue(per_cpu_ptr(wq->cpu_wq, singlethread_cpu)); else { @@ -439,6 +441,8 @@ void flush_work(struct workqueue_struct { struct cpu_workqueue_struct *cwq; + might_sleep(); + cwq = get_wq_data(work); /* Was it ever queued ? */ if (!cwq) _