srcu: Explain the reason behind the read side critical section on GP start
authorFrederic Weisbecker <frederic@kernel.org>
Thu, 13 Oct 2022 17:22:43 +0000 (19:22 +0200)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 21 Oct 2022 17:16:15 +0000 (10:16 -0700)
Tell about the need to protect against concurrent updaters who may
overflow the GP counter behind the current update.

Reported-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/srcutree.c

index 18bb696..272830a 100644 (file)
@@ -1158,6 +1158,11 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
        int ss_state;
 
        check_init_srcu_struct(ssp);
+       /*
+        * While starting a new grace period, make sure we are in an
+        * SRCU read-side critical section so that the grace-period
+        * sequence number cannot wrap around in the meantime.
+        */
        idx = __srcu_read_lock_nmisafe(ssp, false);
        ss_state = smp_load_acquire(&ssp->srcu_size_state);
        if (ss_state < SRCU_SIZE_WAIT_CALL)