diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-10-13 10:57:52 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-10-13 10:57:52 +0900 |
commit | af67c3a9e68ee0a9e30ee8582577408adba0e299 (patch) | |
tree | 1e334fd6ecc9e42b5756f800b59d3fd4c9681f64 | |
parent | 2caa731819a633bec5a56736e64c562b7e193666 (diff) | |
download | linux-af67c3a9e68ee0a9e30ee8582577408adba0e299.tar.gz linux-af67c3a9e68ee0a9e30ee8582577408adba0e299.tar.bz2 linux-af67c3a9e68ee0a9e30ee8582577408adba0e299.zip |
sh: update die() output.
This follows the ARM change, as SH had all of the same issues:
Make die() better match x86:
- add printing of the last accessed sysfs file
- ensure console_verbose() is called under the lock
- ensure we panic outside of oops_exit()
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | arch/sh/kernel/traps_32.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index e0b5e4b5accd..7a2ee3a6b8e7 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c @@ -25,6 +25,7 @@ #include <linux/kexec.h> #include <linux/limits.h> #include <linux/proc_fs.h> +#include <linux/sysfs.h> #include <asm/system.h> #include <asm/uaccess.h> #include <asm/fpu.h> @@ -159,12 +160,12 @@ void die(const char * str, struct pt_regs * regs, long err) oops_enter(); - console_verbose(); spin_lock_irq(&die_lock); + console_verbose(); bust_spinlocks(1); printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); - + sysfs_printk_last_file(); print_modules(); show_regs(regs); @@ -180,6 +181,7 @@ void die(const char * str, struct pt_regs * regs, long err) bust_spinlocks(0); add_taint(TAINT_DIE); spin_unlock_irq(&die_lock); + oops_exit(); if (kexec_should_crash(current)) crash_kexec(regs); @@ -190,7 +192,6 @@ void die(const char * str, struct pt_regs * regs, long err) if (panic_on_oops) panic("Fatal exception"); - oops_exit(); do_exit(SIGSEGV); } |