diff options
| author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-02-19 14:53:56 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-02-22 04:33:22 -0500 |
| commit | 31867499b21b2374eb0cc6b3d1ea6b4ade4d1cc2 (patch) | |
| tree | 8df8d87709b5415dced9dc8ac1e135f695403cd4 /arch/arm/kernel | |
| parent | b00dc3ad74fdb676552d46ee573b88e927240d0c (diff) | |
[ARM] Add panic-on-oops support
Although you could ask the kernel for panic-on-oops, it remained
non-functional because the architecture specific code fragment had
not been implemented. Add it, so it works as advertised.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/traps.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 10235b01582e..03924bcc6129 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/personality.h> | 19 | #include <linux/personality.h> |
| 20 | #include <linux/ptrace.h> | 20 | #include <linux/ptrace.h> |
| 21 | #include <linux/kallsyms.h> | 21 | #include <linux/kallsyms.h> |
| 22 | #include <linux/delay.h> | ||
| 22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
| 23 | 24 | ||
| 24 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
| @@ -231,6 +232,13 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err) | |||
| 231 | __die(str, err, thread, regs); | 232 | __die(str, err, thread, regs); |
| 232 | bust_spinlocks(0); | 233 | bust_spinlocks(0); |
| 233 | spin_unlock_irq(&die_lock); | 234 | spin_unlock_irq(&die_lock); |
| 235 | |||
| 236 | if (panic_on_oops) { | ||
| 237 | printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); | ||
| 238 | ssleep(5); | ||
| 239 | panic("Fatal exception"); | ||
| 240 | } | ||
| 241 | |||
| 234 | do_exit(SIGSEGV); | 242 | do_exit(SIGSEGV); |
| 235 | } | 243 | } |
| 236 | 244 | ||
