diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 86b6e43d41b5..f8b5598f7272 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1535,7 +1535,11 @@ void wq_worker_tick(struct task_struct *task) if (!pwq) return; - pwq->stats[PWQ_STAT_CPU_TIME] += TICK_USEC; + /* + * @pwq is shared across CPUs for unbound wqs and this advisory stat is + * bumped outside pool->lock, so the update is intentionally racy. + */ + data_race(pwq->stats[PWQ_STAT_CPU_TIME] += TICK_USEC); if (!wq_cpu_intensive_thresh_us) return;