summaryrefslogtreecommitdiff
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-04-18 14:14:42 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-05-15 10:29:41 -0700
commit0ae94e00ce40e4447080ab7675220f725c690330 (patch)
treed5c003296ddde1203898a0cb56665c5a2abeb49e /kernel/rcu/tree.c
parent51af970d19f395fc57b82514022126de6c5420cd (diff)
rcu: Make rcu_future_needs_gp() check all ->need_future_gps[] elements
Currently, the rcu_future_needs_gp() function checks only the current element of the ->need_future_gps[] array, which might miss elements that were offset from the expected element, for example, due to races with the start or the end of a grace period. This commit therefore makes rcu_future_needs_gp() use the need_any_future_gp() macro to check all of the elements of this array. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Tested-by: Nicholas Piggin <npiggin@gmail.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index afc5e32f0da4..b05ab6379562 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -720,7 +720,7 @@ static int rcu_future_needs_gp(struct rcu_state *rsp)
struct rcu_node *rnp = rcu_get_root(rsp);
lockdep_assert_irqs_disabled();
- return READ_ONCE(need_future_gp_element(rnp, rnp->completed));
+ return need_any_future_gp(rnp);
}
/*