|
@@ -632,6 +632,7 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
|
|
|
/* Special-case the common single-level case. */
|
|
|
if (NUM_RCU_NODES == 1) {
|
|
|
rnp->qsmask = rnp->qsmaskinit;
|
|
|
+ rnp->gpnum = rsp->gpnum;
|
|
|
rsp->signaled = RCU_SIGNAL_INIT; /* force_quiescent_state OK. */
|
|
|
spin_unlock_irqrestore(&rnp->lock, flags);
|
|
|
return;
|
|
@@ -657,8 +658,10 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
|
|
|
*/
|
|
|
|
|
|
rnp_end = rsp->level[NUM_RCU_LVLS - 1];
|
|
|
- for (rnp_cur = &rsp->node[0]; rnp_cur < rnp_end; rnp_cur++)
|
|
|
+ for (rnp_cur = &rsp->node[0]; rnp_cur < rnp_end; rnp_cur++) {
|
|
|
rnp_cur->qsmask = rnp_cur->qsmaskinit;
|
|
|
+ rnp->gpnum = rsp->gpnum;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Now set up the leaf nodes. Here we must be careful. First,
|
|
@@ -679,6 +682,7 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
|
|
|
for (; rnp_cur < rnp_end; rnp_cur++) {
|
|
|
spin_lock(&rnp_cur->lock); /* irqs already disabled. */
|
|
|
rnp_cur->qsmask = rnp_cur->qsmaskinit;
|
|
|
+ rnp->gpnum = rsp->gpnum;
|
|
|
spin_unlock(&rnp_cur->lock); /* irqs already disabled. */
|
|
|
}
|
|
|
|