diff options
-rw-r--r-- | arch/x86/kernel/dumpstack_32.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c index 7c22f99f0efb..a29b88ffa346 100644 --- a/arch/x86/kernel/dumpstack_32.c +++ b/arch/x86/kernel/dumpstack_32.c | |||
@@ -318,6 +318,7 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | |||
318 | __raw_spin_unlock(&die_lock); | 318 | __raw_spin_unlock(&die_lock); |
319 | raw_local_irq_restore(flags); | 319 | raw_local_irq_restore(flags); |
320 | 320 | ||
321 | oops_exit(); | ||
321 | if (!signr) | 322 | if (!signr) |
322 | return; | 323 | return; |
323 | 324 | ||
@@ -325,7 +326,6 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | |||
325 | panic("Fatal exception in interrupt"); | 326 | panic("Fatal exception in interrupt"); |
326 | if (panic_on_oops) | 327 | if (panic_on_oops) |
327 | panic("Fatal exception"); | 328 | panic("Fatal exception"); |
328 | oops_exit(); | ||
329 | do_exit(signr); | 329 | do_exit(signr); |
330 | } | 330 | } |
331 | 331 | ||
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index 57ce11b895ce..dc6162bf7454 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c | |||
@@ -461,22 +461,22 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | |||
461 | if (regs && kexec_should_crash(current)) | 461 | if (regs && kexec_should_crash(current)) |
462 | crash_kexec(regs); | 462 | crash_kexec(regs); |
463 | 463 | ||
464 | die_owner = -1; | ||
465 | bust_spinlocks(0); | 464 | bust_spinlocks(0); |
465 | die_owner = -1; | ||
466 | add_taint(TAINT_DIE); | ||
466 | die_nest_count--; | 467 | die_nest_count--; |
467 | if (!die_nest_count) | 468 | if (!die_nest_count) |
468 | /* Nest count reaches zero, release the lock. */ | 469 | /* Nest count reaches zero, release the lock. */ |
469 | __raw_spin_unlock(&die_lock); | 470 | __raw_spin_unlock(&die_lock); |
470 | raw_local_irq_restore(flags); | 471 | raw_local_irq_restore(flags); |
471 | if (!signr) { | 472 | oops_exit(); |
472 | oops_exit(); | 473 | |
474 | if (!signr) | ||
473 | return; | 475 | return; |
474 | } | ||
475 | if (in_interrupt()) | 476 | if (in_interrupt()) |
476 | panic("Fatal exception in interrupt"); | 477 | panic("Fatal exception in interrupt"); |
477 | if (panic_on_oops) | 478 | if (panic_on_oops) |
478 | panic("Fatal exception"); | 479 | panic("Fatal exception"); |
479 | oops_exit(); | ||
480 | do_exit(signr); | 480 | do_exit(signr); |
481 | } | 481 | } |
482 | 482 | ||
@@ -499,7 +499,6 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) | |||
499 | return 1; | 499 | return 1; |
500 | 500 | ||
501 | show_registers(regs); | 501 | show_registers(regs); |
502 | add_taint(TAINT_DIE); | ||
503 | /* Executive summary in case the oops scrolled away */ | 502 | /* Executive summary in case the oops scrolled away */ |
504 | printk(KERN_ALERT "RIP "); | 503 | printk(KERN_ALERT "RIP "); |
505 | printk_address(regs->ip, 1); | 504 | printk_address(regs->ip, 1); |