Commit 0687c66b authored by Zqiang's avatar Zqiang Committed by Tejun Heo
Browse files

workqueue: Move the position of debug_work_activate() in __queue_work()



The debug_work_activate() is called on the premise that
the work can be inserted, because if wq be in WQ_DRAINING
status, insert work may be failed.

Fixes: e41e704b ("workqueue: improve destroy_workqueue() debuggability")
Signed-off-by: default avatarZqiang <qiang.zhang@windriver.com>
Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 2023a53b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1412,7 +1412,6 @@ static void __queue_work(int cpu, struct workqueue_struct *wq,
	 */
	lockdep_assert_irqs_disabled();

	debug_work_activate(work);

	/* if draining, only works from the same workqueue are allowed */
	if (unlikely(wq->flags & __WQ_DRAINING) &&
@@ -1494,6 +1493,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq,
		worklist = &pwq->delayed_works;
	}

	debug_work_activate(work);
	insert_work(pwq, work, worklist, work_flags);

out: