diff options
-rw-r--r-- | kernel/rcu/tree_plugin.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 6d07fb402e84..5053dae4454e 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h | |||
@@ -2586,9 +2586,13 @@ static void rcu_spawn_one_nocb_kthread(struct rcu_state *rsp, int cpu) | |||
2586 | rdp->nocb_leader = rdp_spawn; | 2586 | rdp->nocb_leader = rdp_spawn; |
2587 | if (rdp_last && rdp != rdp_spawn) | 2587 | if (rdp_last && rdp != rdp_spawn) |
2588 | rdp_last->nocb_next_follower = rdp; | 2588 | rdp_last->nocb_next_follower = rdp; |
2589 | rdp_last = rdp; | 2589 | if (rdp == rdp_spawn) { |
2590 | rdp = rdp->nocb_next_follower; | 2590 | rdp = rdp->nocb_next_follower; |
2591 | rdp_last->nocb_next_follower = NULL; | 2591 | } else { |
2592 | rdp_last = rdp; | ||
2593 | rdp = rdp->nocb_next_follower; | ||
2594 | rdp_last->nocb_next_follower = NULL; | ||
2595 | } | ||
2592 | } while (rdp); | 2596 | } while (rdp); |
2593 | rdp_spawn->nocb_next_follower = rdp_old_leader; | 2597 | rdp_spawn->nocb_next_follower = rdp_old_leader; |
2594 | } | 2598 | } |