summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Weisbecker <frederic@kernel.org>2023-10-04 01:29:02 +0200
committerNeeraj Upadhyay (AMD) <neeraj.iitr10@gmail.com>2023-12-12 02:41:16 +0530
commit94c55b9e21979daa88e190bf971c47432a818ebe (patch)
treed017cdf353a7bcf9caa2b5b4b02ae5b3dafd48c4
parent20eb4142397cf3ec221de43f10ea149af462c572 (diff)
downloadlinux-stable-94c55b9e21979daa88e190bf971c47432a818ebe.tar.gz
linux-stable-94c55b9e21979daa88e190bf971c47432a818ebe.tar.bz2
linux-stable-94c55b9e21979daa88e190bf971c47432a818ebe.zip
srcu: No need to advance/accelerate if no callback enqueued
While in grace period start, there is nothing to accelerate and therefore no need to advance the callbacks either if no callback is to be enqueued. Spare these needless operations in this case. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.iitr10@gmail.com>
-rw-r--r--kernel/rcu/srcutree.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
index e9356a103626..2bfc8ed1eed2 100644
--- a/kernel/rcu/srcutree.c
+++ b/kernel/rcu/srcutree.c
@@ -1261,9 +1261,11 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
* period (gp_num = X + 8). So acceleration fails.
*/
s = rcu_seq_snap(&ssp->srcu_sup->srcu_gp_seq);
- rcu_segcblist_advance(&sdp->srcu_cblist,
- rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
- WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s) && rhp);
+ if (rhp) {
+ rcu_segcblist_advance(&sdp->srcu_cblist,
+ rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
+ WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s));
+ }
if (ULONG_CMP_LT(sdp->srcu_gp_seq_needed, s)) {
sdp->srcu_gp_seq_needed = s;
needgp = true;