linux-IllusionX/kernel/rcu
Paul E. McKenney fc2897d2ab rcu: Inform KCSAN of one-byte cmpxchg() in rcu_trc_cmpxchg_need_qs()
Tasks Trace RCU needs a single-byte cmpxchg(), but no such thing exists.
Therefore, rcu_trc_cmpxchg_need_qs() emulates one using field substitution
and a four-byte cmpxchg(), such that the other three bytes are always
atomically updated to their old values.  This works, but results in
false-positive KCSAN failures because as far as KCSAN knows, this
cmpxchg() operation is updating all four bytes.

This commit therefore encloses the cmpxchg() in a data_race() and adds
a single-byte instrument_atomic_read_write(), thus telling KCSAN exactly
what is going on so as to avoid the false positives.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Marco Elver <elver@google.com>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
2024-04-15 18:12:18 +02:00
..
Kconfig rcu: Create NEED_TASKS_RCU to factor out enablement logic 2024-04-15 11:29:48 +02:00
Kconfig.debug rcu: Restrict access to RCU CPU stall notifiers 2023-12-12 02:31:22 +05:30
Makefile rcuperf: Change rcuperf to rcuscale 2020-08-24 18:39:24 -07:00
rcu.h Merge branches 'rcu-doc.2024.02.14a', 'rcu-nocb.2024.02.14a', 'rcu-exp.2024.02.14a', 'rcu-tasks.2024.02.26a' and 'rcu-misc.2024.02.14a' into rcu.2024.02.26a 2024-02-26 17:37:25 -08:00
rcu_segcblist.c rcu: Use rcu_segcblist_segempty() instead of open coding it 2023-10-04 17:33:18 +02:00
rcu_segcblist.h rcu: Throttle callback invocation based on number of ready callbacks 2023-01-03 17:28:34 -08:00
rcuscale.c rcu: Rename jiffies_till_flush to jiffies_lazy_flush 2024-02-14 08:00:57 -08:00
rcutorture.c rcutorture: Suppress rtort_pipe_count warnings until after stalls 2024-02-14 08:00:57 -08:00
refscale.c refscale: Print out additional module parameters 2023-09-11 23:02:18 +02:00
srcutiny.c srcu: Make Tiny SRCU explicitly disable preemption 2024-04-15 11:29:48 +02:00
srcutree.c srcu: Improve comments about acceleration leak 2024-02-14 08:00:57 -08:00
sync.c rcu: Mark writes to rcu_sync ->gp_count field 2024-04-15 16:28:46 +02:00
tasks.h rcu: Inform KCSAN of one-byte cmpxchg() in rcu_trc_cmpxchg_need_qs() 2024-04-15 18:12:18 +02:00
tiny.c rcu: Make Tiny RCU explicitly disable preemption 2024-04-15 11:29:48 +02:00
tree.c rcu: Make hotplug operations track GP state, not flags 2024-04-15 16:48:28 +02:00
tree.h rcu: Make hotplug operations track GP state, not flags 2024-04-15 16:48:28 +02:00
tree_exp.h rcu/exp: Remove rcu_par_gp_wq 2024-02-14 07:51:36 -08:00
tree_nocb.h Merge branches 'rcu-doc.2024.02.14a', 'rcu-nocb.2024.02.14a', 'rcu-exp.2024.02.14a', 'rcu-tasks.2024.02.26a' and 'rcu-misc.2024.02.14a' into rcu.2024.02.26a 2024-02-26 17:37:25 -08:00
tree_plugin.h rcu: Make hotplug operations track GP state, not flags 2024-04-15 16:48:28 +02:00
tree_stall.h rcu: Mark loads from rcu_state.n_online_cpus 2024-04-15 16:48:26 +02:00
update.c rcu: Restrict access to RCU CPU stall notifiers 2023-12-12 02:31:22 +05:30