diff options
-rw-r--r-- | kernel/rcutree.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 916f42b39f1e..8105271fc10e 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -680,6 +680,15 @@ __rcu_process_gp_end(struct rcu_state *rsp, struct rcu_node *rnp, struct rcu_dat | |||
680 | rdp->completed = rnp->completed; | 680 | rdp->completed = rnp->completed; |
681 | 681 | ||
682 | /* | 682 | /* |
683 | * If we were in an extended quiescent state, we may have | ||
684 | * missed some grace periods that others CPUs took care on | ||
685 | * our behalf. Catch up with this state to avoid noting | ||
686 | * spurious new grace periods. | ||
687 | */ | ||
688 | if (rdp->completed > rdp->gpnum) | ||
689 | rdp->gpnum = rdp->completed; | ||
690 | |||
691 | /* | ||
683 | * If another CPU handled our extended quiescent states and | 692 | * If another CPU handled our extended quiescent states and |
684 | * we have no more grace period to complete yet, then stop | 693 | * we have no more grace period to complete yet, then stop |
685 | * chasing quiescent states. | 694 | * chasing quiescent states. |