]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
rcutorture: Prepare for asynchronous access to rcu_fwd_startat
authorPaul E. McKenney <paulmck@linux.ibm.com>
Mon, 1 Oct 2018 20:27:41 +0000 (13:27 -0700)
committerPaul E. McKenney <paulmck@linux.ibm.com>
Sat, 1 Dec 2018 20:45:35 +0000 (12:45 -0800)
Because rcutorture's forward-progress checking will trigger from an
OOM notifier, this notifier will introduce asynchronous concurrent
access to the rcu_fwd_startat variable.  This commit therefore prepares
for this by converting updates to WRITE_ONCE().

Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
kernel/rcu/rcutorture.c

index 36a3bc42782dc871f045b14fd78cfd46985f14d1..c4fd61dccedbef70f364b853140d330abb54c6e9 100644 (file)
@@ -1679,7 +1679,7 @@ static void rcu_torture_fwd_prog_nr(int *tested, int *tested_tries)
        sd = cur_ops->stall_dur() + 1;
        sd4 = (sd + fwd_progress_div - 1) / fwd_progress_div;
        dur = sd4 + torture_random(&trs) % (sd - sd4);
-       rcu_fwd_startat = jiffies;
+       WRITE_ONCE(rcu_fwd_startat, jiffies);
        stopat = rcu_fwd_startat + dur;
        while (time_before(jiffies, stopat) && !torture_must_stop()) {
                idx = cur_ops->readlock();
@@ -1728,7 +1728,7 @@ static void rcu_torture_fwd_prog_cr(void)
        /* Loop continuously posting RCU callbacks. */
        WRITE_ONCE(rcu_fwd_cb_nodelay, true);
        cur_ops->sync(); /* Later readers see above write. */
-       rcu_fwd_startat = jiffies;
+       WRITE_ONCE(rcu_fwd_startat, jiffies);
        stopat = rcu_fwd_startat + MAX_FWD_CB_JIFFIES;
        n_launders = 0;
        n_launders_cb = 0;