diff options
-rw-r--r-- | arch/i386/kernel/smp.c | 4 | ||||
-rw-r--r-- | arch/x86_64/kernel/smp.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c index 31e5c6573aae..9827cf927ecb 100644 --- a/arch/i386/kernel/smp.c +++ b/arch/i386/kernel/smp.c | |||
@@ -699,6 +699,10 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info, | |||
699 | put_cpu(); | 699 | put_cpu(); |
700 | return -EBUSY; | 700 | return -EBUSY; |
701 | } | 701 | } |
702 | |||
703 | /* Can deadlock when called with interrupts disabled */ | ||
704 | WARN_ON(irqs_disabled()); | ||
705 | |||
702 | spin_lock_bh(&call_lock); | 706 | spin_lock_bh(&call_lock); |
703 | __smp_call_function_single(cpu, func, info, nonatomic, wait); | 707 | __smp_call_function_single(cpu, func, info, nonatomic, wait); |
704 | spin_unlock_bh(&call_lock); | 708 | spin_unlock_bh(&call_lock); |
diff --git a/arch/x86_64/kernel/smp.c b/arch/x86_64/kernel/smp.c index 9f74c883568c..32f4d7e2a060 100644 --- a/arch/x86_64/kernel/smp.c +++ b/arch/x86_64/kernel/smp.c | |||
@@ -379,6 +379,10 @@ int smp_call_function_single (int cpu, void (*func) (void *info), void *info, | |||
379 | put_cpu(); | 379 | put_cpu(); |
380 | return 0; | 380 | return 0; |
381 | } | 381 | } |
382 | |||
383 | /* Can deadlock when called with interrupts disabled */ | ||
384 | WARN_ON(irqs_disabled()); | ||
385 | |||
382 | spin_lock_bh(&call_lock); | 386 | spin_lock_bh(&call_lock); |
383 | __smp_call_function_single(cpu, func, info, nonatomic, wait); | 387 | __smp_call_function_single(cpu, func, info, nonatomic, wait); |
384 | spin_unlock_bh(&call_lock); | 388 | spin_unlock_bh(&call_lock); |