aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rcutree.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index a4a9c916ad36..ceaa95923a87 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1904,11 +1904,11 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
1904 * If called from an extended quiescent state, invoke the RCU 1904 * If called from an extended quiescent state, invoke the RCU
1905 * core in order to force a re-evaluation of RCU's idleness. 1905 * core in order to force a re-evaluation of RCU's idleness.
1906 */ 1906 */
1907 if (rcu_is_cpu_idle()) 1907 if (rcu_is_cpu_idle() && cpu_online(smp_processor_id()))
1908 invoke_rcu_core(); 1908 invoke_rcu_core();
1909 1909
1910 /* If interrupts were disabled, don't dive into RCU core. */ 1910 /* If interrupts were disabled or CPU offline, don't invoke RCU core. */
1911 if (irqs_disabled_flags(flags)) { 1911 if (irqs_disabled_flags(flags) || cpu_is_offline(smp_processor_id())) {
1912 local_irq_restore(flags); 1912 local_irq_restore(flags);
1913 return; 1913 return;
1914 } 1914 }