Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 665f08f1 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Make rcu_start_this_gp() check for out-of-range requests



If rcu_start_this_gp() is invoked with a requested grace period more
than three in the future, then either the ->need_future_gp[] array
needs to be bigger or the caller needs to be repaired.  This commit
therefore adds a WARN_ON_ONCE() checking for this condition.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: default avatarNicholas Piggin <npiggin@gmail.com>
parent 360e0da6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1698,6 +1698,8 @@ static bool rcu_start_this_gp(struct rcu_node *rnp, struct rcu_data *rdp,
	for (rnp_root = rnp; 1; rnp_root = rnp_root->parent) {
		if (rnp_root != rnp)
			raw_spin_lock_rcu_node(rnp_root);
		WARN_ON_ONCE(ULONG_CMP_LT(rnp_root->gpnum +
					  need_future_gp_mask(), c));
		if (need_future_gp_element(rnp_root, c) ||
		    ULONG_CMP_GE(rnp_root->gpnum, c) ||
		    (rnp != rnp_root &&