From: "Paul E. McKenney" <[email protected]>

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 <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
---
 kernel/rcu/refscale.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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();
-- 
2.34.1

Reply via email to