|
@@ -231,6 +231,7 @@ static void __die(const char *str, int err, struct thread_info *thread, struct p
|
|
|
|
|
|
printk(KERN_EMERG "Internal error: %s: %x [#%d]" S_PREEMPT S_SMP "\n",
|
|
|
str, err, ++die_counter);
|
|
|
+ sysfs_printk_last_file();
|
|
|
print_modules();
|
|
|
__show_regs(regs);
|
|
|
printk(KERN_EMERG "Process %.*s (pid: %d, stack limit = 0x%p)\n",
|
|
@@ -255,13 +256,14 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
|
|
|
|
|
|
oops_enter();
|
|
|
|
|
|
- console_verbose();
|
|
|
spin_lock_irq(&die_lock);
|
|
|
+ console_verbose();
|
|
|
bust_spinlocks(1);
|
|
|
__die(str, err, thread, regs);
|
|
|
bust_spinlocks(0);
|
|
|
add_taint(TAINT_DIE);
|
|
|
spin_unlock_irq(&die_lock);
|
|
|
+ oops_exit();
|
|
|
|
|
|
if (in_interrupt())
|
|
|
panic("Fatal exception in interrupt");
|
|
@@ -269,7 +271,6 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
|
|
|
if (panic_on_oops)
|
|
|
panic("Fatal exception");
|
|
|
|
|
|
- oops_exit();
|
|
|
do_exit(SIGSEGV);
|
|
|
}
|
|
|
|