diff --git a/[refs] b/[refs] index ddd67992e61a..8580e64f7da7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7ece55a4a3a04abe37118b1d4fb0b702eeb1de4c +refs/heads/master: a10d206ef1a83121ab7430cb196e0376a7145b22 diff --git a/trunk/kernel/rcutree.c b/trunk/kernel/rcutree.c index f280e542e3e9..f7bcd9e6c054 100644 --- a/trunk/kernel/rcutree.c +++ b/trunk/kernel/rcutree.c @@ -305,7 +305,9 @@ cpu_has_callbacks_ready_to_invoke(struct rcu_data *rdp) static int cpu_needs_another_gp(struct rcu_state *rsp, struct rcu_data *rdp) { - return *rdp->nxttail[RCU_DONE_TAIL] && !rcu_gp_in_progress(rsp); + return *rdp->nxttail[RCU_DONE_TAIL + + ACCESS_ONCE(rsp->completed) != rdp->completed] && + !rcu_gp_in_progress(rsp); } /*