diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/rcutree.c | 6 |
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 | } |