projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
aef1b9c
)
x86: Only call smp_processor_id in non-preempt cases
author
Don Zickus
<
[email protected]
>
Wed, 5 Jan 2011 03:38:07 +0000
(22:38 -0500)
committer
Ingo Molnar
<
[email protected]
>
Wed, 5 Jan 2011 13:22:57 +0000
(14:22 +0100)
There are some paths that walk the die_chain with preemption on.
Make sure we are in an NMI call before we start doing anything.
This was triggered by do_general_protection calling notify_die
with DIE_GPF.
Reported-by: Jan Kiszka <
[email protected]
>
Signed-off-by: Don Zickus <
[email protected]
>
LKML-Reference: <
1294198689
[email protected]
>
Signed-off-by: Ingo Molnar <
[email protected]
>
arch/x86/kernel/apic/hw_nmi.c
patch
|
blob
|
history
diff --git
a/arch/x86/kernel/apic/hw_nmi.c
b/arch/x86/kernel/apic/hw_nmi.c
index c57d0b5994489df472d38566fb6a65da45894c7c..2b40a6045da2953b782c05d52d372b74a6cd09d8 100644
(file)
--- a/
arch/x86/kernel/apic/hw_nmi.c
+++ b/
arch/x86/kernel/apic/hw_nmi.c
@@
-51,7
+51,7
@@
arch_trigger_all_cpu_backtrace_handler(struct notifier_block *self,
{
struct die_args *args = __args;
struct pt_regs *regs;
- int cpu
= smp_processor_id()
;
+ int cpu;
switch (cmd) {
case DIE_NMI:
@@
-63,6
+63,7
@@
arch_trigger_all_cpu_backtrace_handler(struct notifier_block *self,
}
regs = args->regs;
+ cpu = smp_processor_id();
if (cpumask_test_cpu(cpu, to_cpumask(backtrace_mask))) {
static arch_spinlock_t lock = __ARCH_SPIN_LOCK_UNLOCKED;