aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r--kernel/rcutree.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 669d7fe049d1..120820ffc657 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1668,7 +1668,9 @@ static void _rcu_barrier(struct rcu_state *rsp,
1668 * decrement rcu_barrier_cpu_count -- otherwise the first CPU 1668 * decrement rcu_barrier_cpu_count -- otherwise the first CPU
1669 * might complete its grace period before all of the other CPUs 1669 * might complete its grace period before all of the other CPUs
1670 * did their increment, causing this function to return too 1670 * did their increment, causing this function to return too
1671 * early. 1671 * early. Note that on_each_cpu() disables irqs, which prevents
1672 * any CPUs from coming online or going offline until each online
1673 * CPU has queued its RCU-barrier callback.
1672 */ 1674 */
1673 atomic_set(&rcu_barrier_cpu_count, 1); 1675 atomic_set(&rcu_barrier_cpu_count, 1);
1674 on_each_cpu(rcu_barrier_func, (void *)call_rcu_func, 1); 1676 on_each_cpu(rcu_barrier_func, (void *)call_rcu_func, 1);
@@ -1797,9 +1799,9 @@ static int __cpuinit rcu_cpu_notify(struct notifier_block *self,
1797 case CPU_DYING: 1799 case CPU_DYING:
1798 case CPU_DYING_FROZEN: 1800 case CPU_DYING_FROZEN:
1799 /* 1801 /*
1800 * The whole machine is "stopped" except this cpu, so we can 1802 * The whole machine is "stopped" except this CPU, so we can
1801 * touch any data without introducing corruption. And we send 1803 * touch any data without introducing corruption. We send the
1802 * the callbacks to an attribute chosen online cpu. 1804 * dying CPU's callbacks to an arbitrarily chosen online CPU.
1803 */ 1805 */
1804 rcu_send_cbs_to_online(&rcu_bh_state); 1806 rcu_send_cbs_to_online(&rcu_bh_state);
1805 rcu_send_cbs_to_online(&rcu_sched_state); 1807 rcu_send_cbs_to_online(&rcu_sched_state);