Skip to content

Commit 94c55b9

Browse files
Frederic Weisbeckerneeraju
authored andcommitted
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>
1 parent 20eb414 commit 94c55b9

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

kernel/rcu/srcutree.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,9 +1261,11 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
12611261
* period (gp_num = X + 8). So acceleration fails.
12621262
*/
12631263
s = rcu_seq_snap(&ssp->srcu_sup->srcu_gp_seq);
1264-
rcu_segcblist_advance(&sdp->srcu_cblist,
1265-
rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
1266-
WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s) && rhp);
1264+
if (rhp) {
1265+
rcu_segcblist_advance(&sdp->srcu_cblist,
1266+
rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq));
1267+
WARN_ON_ONCE(!rcu_segcblist_accelerate(&sdp->srcu_cblist, s));
1268+
}
12671269
if (ULONG_CMP_LT(sdp->srcu_gp_seq_needed, s)) {
12681270
sdp->srcu_gp_seq_needed = s;
12691271
needgp = true;

0 commit comments

Comments
 (0)