summaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index f5acf34247fb..aeea697d6f9f 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -3862,10 +3862,6 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
3862{ 3862{
3863 lockdep_assert_held(&rsp->orphan_lock); 3863 lockdep_assert_held(&rsp->orphan_lock);
3864 3864
3865 /* No-CBs CPUs do not have orphanable callbacks. */
3866 if (!IS_ENABLED(CONFIG_HOTPLUG_CPU) || rcu_is_nocb_cpu(rdp->cpu))
3867 return;
3868
3869 /* 3865 /*
3870 * Orphan the callbacks. First adjust the counts. This is safe 3866 * Orphan the callbacks. First adjust the counts. This is safe
3871 * because _rcu_barrier() excludes CPU-hotplug operations, so it 3867 * because _rcu_barrier() excludes CPU-hotplug operations, so it
@@ -3935,6 +3931,9 @@ static void rcu_migrate_callbacks(int cpu, struct rcu_state *rsp)
3935 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); 3931 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu);
3936 struct rcu_node *rnp = rdp->mynode; /* Outgoing CPU's rdp & rnp. */ 3932 struct rcu_node *rnp = rdp->mynode; /* Outgoing CPU's rdp & rnp. */
3937 3933
3934 if (rcu_is_nocb_cpu(cpu) || rcu_segcblist_empty(&rdp->cblist))
3935 return; /* No callbacks to migrate. */
3936
3938 raw_spin_lock_irqsave(&rsp->orphan_lock, flags); 3937 raw_spin_lock_irqsave(&rsp->orphan_lock, flags);
3939 rcu_send_cbs_to_orphanage(cpu, rsp, rnp, rdp); 3938 rcu_send_cbs_to_orphanage(cpu, rsp, rnp, rdp);
3940 rcu_adopt_orphan_cbs(rsp, flags); 3939 rcu_adopt_orphan_cbs(rsp, flags);