rcutorture: Remove extraneous rcu_torture_pipe_update_one() READ_ONCE()
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 7 Mar 2024 03:14:46 +0000 (19:14 -0800)
committerUladzislau Rezki (Sony) <urezki@gmail.com>
Tue, 16 Apr 2024 09:16:25 +0000 (11:16 +0200)
The rcu_torture_pipe_update_one() cannot run concurrently with any updates
of ->rtort_pipe_count, so this commit removes the extraneous READ_ONCE()
from the read from this field.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Closes: https://lore.kernel.org/lkml/CAHk-=wiX_zF5Mpt8kUm_LFQpYY-mshrXJPOe+wKNwiVhEUcU9g@mail.gmail.com/
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
kernel/rcu/rcutorture.c

index d8c12eba35b7fa6aad1454c7a7098cc2a8f557dd..6b821a7037b03636c853b09695374349002db888 100644 (file)
@@ -461,7 +461,7 @@ rcu_torture_pipe_update_one(struct rcu_torture *rp)
                WRITE_ONCE(rp->rtort_chkp, NULL);
                smp_store_release(&rtrcp->rtc_ready, 1); // Pair with smp_load_acquire().
        }
-       i = READ_ONCE(rp->rtort_pipe_count);
+       i = rp->rtort_pipe_count;
        if (i > RCU_TORTURE_PIPE_LEN)
                i = RCU_TORTURE_PIPE_LEN;
        atomic_inc(&rcu_torture_wcount[i]);