diff options
| author | Breno Leitao <leitao@debian.org> | 2026-08-13 06:12:12 -0700 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-08-13 07:00:19 -1000 |
| commit | 20a80e7f6b71bd664c98e95589f0cbc68804d200 (patch) | |
| tree | bf22095775b4af07904b63b9b354bd4a2d3cb21d /tools/perf/scripts/python/bin/stackcollapse-report | |
| parent | 4e0ee51cc2b7a542e5679edaa14aaa82be3b4abb (diff) | |
workqueue: annotate racy p->wake_cpu accesses in kick_pool_pick()
kick_pool_pick() reads and writes p->wake_cpu while the scheduler can
update it concurrently. KCSAN reports:
BUG: KCSAN: data-race in kick_pool_pick+0xf8/0x2d8
race at unknown origin, with read to 0xffff000663229da4 of 4 bytes by
task 1817002 on cpu 40:
kick_pool_pick+0xf8/0x2d8
process_scheduled_works+0x2bc/0x888
worker_thread+0x394/0x548
kthread+0x1b8/0x1f0
ret_from_fork+0x10/0x20
value changed: 0x0000002b -> 0x0000002f
The race is harmless. wake_cpu is a best-effort placement hint: every
writer stores a valid CPU id and the wakeup path validates it through
select_task_rq(), so a stale value only affects which CPU the worker
wakes up on.
Mark both accesses with READ_ONCE() and WRITE_ONCE() to document that
they are intentionally racy and to stop the compiler from reloading or
tearing them.
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Bradley Morgan <include@grrlz.net>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/stackcollapse-report')
0 files changed, 0 insertions, 0 deletions
