diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index d4364d3d8aaa4e0509885af7b10b4b562d37f882..c85825e17df8530d8ec1b76f2a262e8ecd51a099 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -2599,6 +2599,7 @@ __acquires(&pool->lock)
 	 */
 	set_work_pool_and_clear_pending(work, pool->id);
 
+	pwq->stats[PWQ_STAT_STARTED]++;
 	raw_spin_unlock_irq(&pool->lock);
 
 	lock_map_acquire(&pwq->wq->lockdep_map);
@@ -2625,7 +2626,6 @@ __acquires(&pool->lock)
 	 * workqueues), so hiding them isn't a problem.
 	 */
 	lockdep_invariant_state(true);
-	pwq->stats[PWQ_STAT_STARTED]++;
 	trace_workqueue_execute_start(work);
 	worker->current_func(work);
 	/*