rcu/nocb: Delete bypass_timer upon nocb_gp wakeup
authorFrederic Weisbecker <frederic@kernel.org>
Tue, 23 Feb 2021 00:10:08 +0000 (01:10 +0100)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 12 May 2021 19:10:23 +0000 (12:10 -0700)
A NOCB-gp wake p can safely delete the ->nocb_bypass_timer because
nocb_gp_wait() will recheck again the bypass state and rearm the bypass
timer if necessary.  This commit therefore deletes this timer.

Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Joel Fernandes <joel@joelfernandes.org>
Cc: Neeraj Upadhyay <neeraju@codeaurora.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_plugin.h

index a667551..4253a0e 100644 (file)
@@ -1701,6 +1701,8 @@ static bool __wake_nocb_gp(struct rcu_data *rdp_gp,
                del_timer(&rdp_gp->nocb_timer);
        }
 
+       del_timer(&rdp_gp->nocb_bypass_timer);
+
        if (force || READ_ONCE(rdp_gp->nocb_gp_sleep)) {
                WRITE_ONCE(rdp_gp->nocb_gp_sleep, false);
                needwake = true;