]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
refscale: Fix misplaced data re-read
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 1 Aug 2023 16:30:18 +0000 (09:30 -0700)
committerFrederic Weisbecker <frederic@kernel.org>
Mon, 11 Sep 2023 21:00:32 +0000 (23:00 +0200)
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

index 91a0fd0d4d9ab800a7238f88263090929b2422bf..750a63e995390a490ab473a9bdac464f31982933 100644 (file)
@@ -655,12 +655,12 @@ retry:
                        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();