Commit f042a436 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcutorture: Add READ_ONCE() to rcu_torture_count and rcu_torture_batch



The rcutorture rcu_torture_count and rcu_torture_batch per-CPU variables
are read locklessly, so this commit adds the READ_ONCE() to a load in
order to avoid various types of compiler vandalism^Woptimization.

This data race was reported by KCSAN. Not appropriate for backporting
due to failure being unlikely and due to this being rcutorture.

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 102c14d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1413,8 +1413,8 @@ rcu_torture_stats_print(void)

	for_each_possible_cpu(cpu) {
		for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
			pipesummary[i] += per_cpu(rcu_torture_count, cpu)[i];
			batchsummary[i] += per_cpu(rcu_torture_batch, cpu)[i];
			pipesummary[i] += READ_ONCE(per_cpu(rcu_torture_count, cpu)[i]);
			batchsummary[i] += READ_ONCE(per_cpu(rcu_torture_batch, cpu)[i]);
		}
	}
	for (i = RCU_TORTURE_PIPE_LEN - 1; i >= 0; i--) {