diff mbox series

[1/3] refscale: Fix misplaced data re-read

Message ID 20231019115452.1215974-2-frederic@kernel.org (mailing list archive)
State Mainlined
Commit 730c3ed4ba30feadfb20b4d4d18e869bc00348f6
Headers show
Series RCU refscale update for v6.7 | expand

Commit Message

Frederic Weisbecker Oct. 19, 2023, 11:54 a.m. UTC
From: "Paul E. McKenney" <paulmck@kernel.org>

This commit fixes a misplaced data re-read in the typesafe code.
The reason that this was not noticed is that this is a performance test
with no writers, so a mismatch could not occur.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
 kernel/rcu/refscale.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index 91a0fd0d4d9a..750a63e99539 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -655,12 +655,12 @@  static void typesafe_delay_section(const int nloops, const int udl, const int nd
 			goto retry;
 		}
 		un_delay(udl, ndl);
+		b = READ_ONCE(rtsp->a);
 		// Remember, seqlock read-side release can fail.
 		if (!rts_release(rtsp, start)) {
 			rcu_read_unlock();
 			goto retry;
 		}
-		b = READ_ONCE(rtsp->a);
 		WARN_ONCE(a != b, "Re-read of ->a changed from %u to %u.\n", a, b);
 		b = rtsp->b;
 		rcu_read_unlock();