]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rcutorture: Correctly compute probability to invoke ->exp_current()
authorPaul E. McKenney <paulmck@kernel.org>
Mon, 29 Dec 2025 19:16:16 +0000 (11:16 -0800)
committerBoqun Feng <boqun.feng@gmail.com>
Wed, 7 Jan 2026 13:58:34 +0000 (21:58 +0800)
Lack of parentheses causes the ->exp_current() function, for example,
srcu_expedite_current(), to be called only once in four billion times
instead of the intended once in 256 times.  This commit therefore adds
the needed parentheses.

Reported-by: Chris Mason <clm@meta.com>
Reported-by: Joel Fernandes <joelagnelf@nvidia.com>
Fixes: 950063c6e897 ("rcutorture: Test srcu_expedite_current()")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
kernel/rcu/rcutorture.c

index 07e51974b06bc692f47bb4752dd026953030732e..83934402a287b57ab599acf67ed6838e7904bfc7 100644 (file)
@@ -1750,7 +1750,7 @@ rcu_torture_writer(void *arg)
                                        ulo[i] = cur_ops->get_comp_state();
                                gp_snap = cur_ops->start_gp_poll();
                                rcu_torture_writer_state = RTWS_POLL_WAIT;
-                               if (cur_ops->exp_current && !torture_random(&rand) % 0xff)
+                               if (cur_ops->exp_current && !(torture_random(&rand) & 0xff))
                                        cur_ops->exp_current();
                                while (!cur_ops->poll_gp_state(gp_snap)) {
                                        gp_snap1 = cur_ops->get_gp_state();
@@ -1772,7 +1772,7 @@ rcu_torture_writer(void *arg)
                                        cur_ops->get_comp_state_full(&rgo[i]);
                                cur_ops->start_gp_poll_full(&gp_snap_full);
                                rcu_torture_writer_state = RTWS_POLL_WAIT_FULL;
-                               if (cur_ops->exp_current && !torture_random(&rand) % 0xff)
+                               if (cur_ops->exp_current && !(torture_random(&rand) & 0xff))
                                        cur_ops->exp_current();
                                while (!cur_ops->poll_gp_state_full(&gp_snap_full)) {
                                        cur_ops->get_gp_state_full(&gp_snap1_full);