mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
rcutorture: Fix stray access to rcu_fwd_cb_nodelay
The rcu_fwd_cb_nodelay variable suppresses excessively long read-side delays while carrying out an rcutorture forward-progress test. As such, it is accessed both by readers and updaters, and most of the accesses therefore use *_ONCE(). Except for one in rcu_read_delay(), which this commit fixes. This data race was reported by KCSAN. Not appropriate for backporting due to this being rcutorture. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
202489101f
commit
102c14d2f8
@ -339,7 +339,7 @@ rcu_read_delay(struct torture_random_state *rrsp, struct rt_read_seg *rtrsp)
|
|||||||
* period, and we want a long delay occasionally to trigger
|
* period, and we want a long delay occasionally to trigger
|
||||||
* force_quiescent_state. */
|
* force_quiescent_state. */
|
||||||
|
|
||||||
if (!rcu_fwd_cb_nodelay &&
|
if (!READ_ONCE(rcu_fwd_cb_nodelay) &&
|
||||||
!(torture_random(rrsp) % (nrealreaders * 2000 * longdelay_ms))) {
|
!(torture_random(rrsp) % (nrealreaders * 2000 * longdelay_ms))) {
|
||||||
started = cur_ops->get_gp_seq();
|
started = cur_ops->get_gp_seq();
|
||||||
ts = rcu_trace_clock_local();
|
ts = rcu_trace_clock_local();
|
||||||
|
Loading…
Reference in New Issue
Block a user