linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: paulmck@kernel.org
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com,
	mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
	rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
	fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org,
	"Paul E. McKenney" <paulmck@kernel.org>
Subject: [PATCH tip/core/rcu 03/18] rcutorture: Mark data-race potential for rcu_barrier() test statistics
Date: Wed, 15 Apr 2020 10:30:45 -0700	[thread overview]
Message-ID: <20200415173100.9927-3-paulmck@kernel.org> (raw)
In-Reply-To: <20200415173037.GA9768@paulmck-ThinkPad-P72>

From: "Paul E. McKenney" <paulmck@kernel.org>

The n_barrier_successes, n_barrier_attempts, and
n_rcu_torture_barrier_error variables are updated (without access
markings) by the main rcu_barrier() test kthread, and accessed (also
without access markings) by the rcu_torture_stats() kthread.  This of
course can result in KCSAN complaints.

Because the accesses are in diagnostic prints, this commit uses
data_race() to excuse the diagnostic prints from the data race.  If this
were to ever cause bogus statistics prints (for example, due to store
tearing), any misleading information would be disambiguated by the
presence or absence of an rcutorture splat.

This data race was reported by KCSAN.  Not appropriate for backporting
due to failure being unlikely and due to the mild consequences of the
failure, namely a confusing rcutorture console message.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
 kernel/rcu/rcutorture.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 7e2ea0c5..d0345d1 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1456,9 +1456,9 @@ rcu_torture_stats_print(void)
 		atomic_long_read(&n_rcu_torture_timers));
 	torture_onoff_stats();
 	pr_cont("barrier: %ld/%ld:%ld\n",
-		n_barrier_successes,
-		n_barrier_attempts,
-		n_rcu_torture_barrier_error);
+		data_race(n_barrier_successes),
+		data_race(n_barrier_attempts),
+		data_race(n_rcu_torture_barrier_error));
 
 	pr_alert("%s%s ", torture_type, TORTURE_FLAG);
 	if (atomic_read(&n_rcu_torture_mberror) ||
-- 
2.9.5


  parent reply	other threads:[~2020-04-15 17:34 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-15 17:30 [PATCH tip/core/rcu 0/18] Torture-test updates for v5.8 Paul E. McKenney
2020-04-15 17:30 ` [PATCH tip/core/rcu 01/18] rcutorture: Add KCSAN stubs paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 02/18] rcutorture: Make kvm-recheck-rcu.sh handle truncated lines paulmck
2020-04-15 17:30 ` paulmck [this message]
2020-04-15 17:30 ` [PATCH tip/core/rcu 04/18] locktorture.c: Fix if-statement empty body warnings paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 05/18] Default enable RCU list lockdep debugging with PROVE_RCU paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 06/18] rcutorture: Add flag to produce non-busy-wait task stalls paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 07/18] rcutorture: Right-size TREE10 CPU consumption paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 08/18] rcu: Allow rcutorture to starve grace-period kthread paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 09/18] torture: Add --kcsan argument to top-level kvm.sh script paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 10/18] torture: Make --kcsan argument also create a summary paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 11/18] rcutorture: Make rcu_fwds and rcu_fwd_emergency_stop static paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 12/18] torture: Eliminate duplicate #CHECK# from ConfigFragment paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 13/18] torture: Abstract application of additional Kconfig options paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 14/18] torture: Allow --kconfig options to override --kcsan defaults paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 15/18] torture: Allow scenario-specific Kconfig options to override CFcommon paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 16/18] torture: Save a few lines by using config_override_param initially paulmck
2020-04-15 17:30 ` [PATCH tip/core/rcu 17/18] torture: Add a --kasan argument paulmck
2020-04-15 17:31 ` [PATCH tip/core/rcu 18/18] rcutorture: Convert ULONG_CMP_LT() to time_before() paulmck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200415173100.9927-3-paulmck@kernel.org \
    --to=paulmck@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=joel@joelfernandes.org \
    --cc=josh@joshtriplett.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rcu@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).