summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorKunwu Chan <kunwu.chan@gmail.com>2026-09-07 15:58:29 +0800
committerPaul E. McKenney <paulmck@kernel.org>2026-10-12 16:50:40 -0700
commitcc7287f9ee696e71c3adc23baf21a2dbe0e94874 (patch)
tree2c4e8e06e3fb8b2535c4e8dc576a5cd6f8614ff4 /scripts/Makefile.thinlto
parent47138812bc786b74a9f96874782668c64860dcc1 (diff)
downloadlinux-cc7287f9ee696e71c3adc23baf21a2dbe0e94874.tar.gz
linux-cc7287f9ee696e71c3adc23baf21a2dbe0e94874.zip
srcu: Restrict atomic-SRCU non_block annotation to task context
srcu_read_lock_atomic() and srcu_read_unlock_atomic() arm and disarm might_sleep() checks via non_block_start()/non_block_end(), skipping hardirq so the update does not land on the interrupted task's ->non_block_count. Inline softirqs run on the interrupted task's stack as well, so a timer callback running atomic-SRCU readers races with the interrupted task's own ->non_block_count updates, as KCSAN reports: BUG: KCSAN: data-race in srcu_torture_read_lock / srcu_torture_read_unlock write to 0xffffa00f818ea418 of 4 bytes by interrupt on cpu 0: srcu_torture_read_lock+0x422/0x470 rcutorture_one_extend+0xdc/0x600 rcu_torture_one_read+0xd1/0x330 rcu_torture_timer+0x75/0x140 call_timer_fn+0xe6/0x2f0 ... run_timer_softirq+0xb7/0x130 handle_softirqs+0xfc/0x3f0 __irq_exit_rcu+0x8e/0x100 Use in_task() so the annotation is applied only in task context; it is redundant elsewhere because might_sleep() already warns about sleeping from atomic context. Signed-off-by: Kunwu Chan <kunwu.chan@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions