diff options
-rw-r--r-- | kernel/rcutree.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 52c3102dc5f7..ddc6acc85d26 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -1151,7 +1151,7 @@ static int __noreturn rcu_gp_kthread(void *arg) | |||
1151 | * completed. | 1151 | * completed. |
1152 | */ | 1152 | */ |
1153 | if (*rdp->nxttail[RCU_WAIT_TAIL] == NULL) { | 1153 | if (*rdp->nxttail[RCU_WAIT_TAIL] == NULL) { |
1154 | raw_spin_unlock(&rnp->lock); /* irqs remain disabled. */ | 1154 | raw_spin_unlock_irq(&rnp->lock); |
1155 | 1155 | ||
1156 | /* | 1156 | /* |
1157 | * Propagate new ->completed value to rcu_node | 1157 | * Propagate new ->completed value to rcu_node |
@@ -1160,14 +1160,13 @@ static int __noreturn rcu_gp_kthread(void *arg) | |||
1160 | * to process their callbacks. | 1160 | * to process their callbacks. |
1161 | */ | 1161 | */ |
1162 | rcu_for_each_node_breadth_first(rsp, rnp) { | 1162 | rcu_for_each_node_breadth_first(rsp, rnp) { |
1163 | /* irqs already disabled. */ | 1163 | raw_spin_lock_irq(&rnp->lock); |
1164 | raw_spin_lock(&rnp->lock); | ||
1165 | rnp->completed = rsp->gpnum; | 1164 | rnp->completed = rsp->gpnum; |
1166 | /* irqs remain disabled. */ | 1165 | raw_spin_unlock_irq(&rnp->lock); |
1167 | raw_spin_unlock(&rnp->lock); | 1166 | cond_resched(); |
1168 | } | 1167 | } |
1169 | rnp = rcu_get_root(rsp); | 1168 | rnp = rcu_get_root(rsp); |
1170 | raw_spin_lock(&rnp->lock); /* irqs already disabled. */ | 1169 | raw_spin_lock_irq(&rnp->lock); |
1171 | } | 1170 | } |
1172 | 1171 | ||
1173 | rsp->completed = rsp->gpnum; /* Declare grace period done. */ | 1172 | rsp->completed = rsp->gpnum; /* Declare grace period done. */ |