diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 70f95ab28f3dbc91ba119c0c4418311014b94b71..5c26d36146b7cdaffd4529973413ceb2fe4bb463 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1997,7 +1997,9 @@ __acquires(&gcwq->lock) spin_unlock_irq(&gcwq->lock); + smp_wmb(); /* paired with test_and_set_bit(PENDING) */ work_clear_pending(work); + lock_map_acquire_read(&cwq->wq->lockdep_map); lock_map_acquire(&lockdep_map); trace_workqueue_execute_start(work);