diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:35:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:35:10 -0400 |
commit | 57d326169e878a1a37b2bccd1cf81f6809ee67b9 (patch) | |
tree | 86ed74ae4dc2beaebce1c67b8459f1873b777d3a /kernel/panic.c | |
parent | 7b215de3d0abbc4f6daf2efd19e8809af0564490 (diff) | |
parent | 0244756edc4b98c129e92c7061d9f383708cf786 (diff) |
Merge branch 'akpm' (patches from Andrew Morton) into next
Merge more updates from Andrew Morton:
- Most of the rest of MM.
This includes "mark remap_file_pages syscall as deprecated" but the
actual "replace remap_file_pages syscall with emulation" is held
back. I guess we'll need to work out when to pull the trigger on
that one.
- various minor cleanups to obscure filesystems
- the drivers/rtc queue
- hfsplus updates
- ufs, hpfs, fatfs, affs, reiserfs
- Documentation/
- signals
- procfs
- cpu hotplug
- lib/idr.c
- rapidio
- sysctl
- ipc updates
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (171 commits)
ufs: sb mutex merge + mutex_destroy
powerpc: update comments for generic idle conversion
cris: update comments for generic idle conversion
idle: remove cpu_idle() forward declarations
nbd: zero from and len fields in NBD_CMD_DISCONNECT.
mm: convert some level-less printks to pr_*
MAINTAINERS: adi-buildroot-devel is moderated
MAINTAINERS: add linux-api for review of API/ABI changes
mm/kmemleak-test.c: use pr_fmt for logging
fs/dlm/debug_fs.c: replace seq_printf by seq_puts
fs/dlm/lockspace.c: convert simple_str to kstr
fs/dlm/config.c: convert simple_str to kstr
mm: mark remap_file_pages() syscall as deprecated
mm: memcontrol: remove unnecessary memcg argument from soft limit functions
mm: memcontrol: clean up memcg zoneinfo lookup
mm/memblock.c: call kmemleak directly from memblock_(alloc|free)
mm/mempool.c: update the kmemleak stack trace for mempool allocations
lib/radix-tree.c: update the kmemleak stack trace for radix tree allocations
mm: introduce kmemleak_update_trace()
mm/kmemleak.c: use %u to print ->checksum
...
Diffstat (limited to 'kernel/panic.c')
-rw-r--r-- | kernel/panic.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index d02fa9fef46a..62e16cef9cc2 100644 --- a/kernel/panic.c +++ b/kernel/panic.c | |||
@@ -32,6 +32,7 @@ static unsigned long tainted_mask; | |||
32 | static int pause_on_oops; | 32 | static int pause_on_oops; |
33 | static int pause_on_oops_flag; | 33 | static int pause_on_oops_flag; |
34 | static DEFINE_SPINLOCK(pause_on_oops_lock); | 34 | static DEFINE_SPINLOCK(pause_on_oops_lock); |
35 | static bool crash_kexec_post_notifiers; | ||
35 | 36 | ||
36 | int panic_timeout = CONFIG_PANIC_TIMEOUT; | 37 | int panic_timeout = CONFIG_PANIC_TIMEOUT; |
37 | EXPORT_SYMBOL_GPL(panic_timeout); | 38 | EXPORT_SYMBOL_GPL(panic_timeout); |
@@ -112,9 +113,11 @@ void panic(const char *fmt, ...) | |||
112 | /* | 113 | /* |
113 | * If we have crashed and we have a crash kernel loaded let it handle | 114 | * If we have crashed and we have a crash kernel loaded let it handle |
114 | * everything else. | 115 | * everything else. |
115 | * Do we want to call this before we try to display a message? | 116 | * If we want to run this after calling panic_notifiers, pass |
117 | * the "crash_kexec_post_notifiers" option to the kernel. | ||
116 | */ | 118 | */ |
117 | crash_kexec(NULL); | 119 | if (!crash_kexec_post_notifiers) |
120 | crash_kexec(NULL); | ||
118 | 121 | ||
119 | /* | 122 | /* |
120 | * Note smp_send_stop is the usual smp shutdown function, which | 123 | * Note smp_send_stop is the usual smp shutdown function, which |
@@ -131,6 +134,15 @@ void panic(const char *fmt, ...) | |||
131 | 134 | ||
132 | kmsg_dump(KMSG_DUMP_PANIC); | 135 | kmsg_dump(KMSG_DUMP_PANIC); |
133 | 136 | ||
137 | /* | ||
138 | * If you doubt kdump always works fine in any situation, | ||
139 | * "crash_kexec_post_notifiers" offers you a chance to run | ||
140 | * panic_notifiers and dumping kmsg before kdump. | ||
141 | * Note: since some panic_notifiers can make crashed kernel | ||
142 | * more unstable, it can increase risks of the kdump failure too. | ||
143 | */ | ||
144 | crash_kexec(NULL); | ||
145 | |||
134 | bust_spinlocks(0); | 146 | bust_spinlocks(0); |
135 | 147 | ||
136 | if (!panic_blink) | 148 | if (!panic_blink) |
@@ -472,6 +484,13 @@ EXPORT_SYMBOL(__stack_chk_fail); | |||
472 | core_param(panic, panic_timeout, int, 0644); | 484 | core_param(panic, panic_timeout, int, 0644); |
473 | core_param(pause_on_oops, pause_on_oops, int, 0644); | 485 | core_param(pause_on_oops, pause_on_oops, int, 0644); |
474 | 486 | ||
487 | static int __init setup_crash_kexec_post_notifiers(char *s) | ||
488 | { | ||
489 | crash_kexec_post_notifiers = true; | ||
490 | return 0; | ||
491 | } | ||
492 | early_param("crash_kexec_post_notifiers", setup_crash_kexec_post_notifiers); | ||
493 | |||
475 | static int __init oops_setup(char *s) | 494 | static int __init oops_setup(char *s) |
476 | { | 495 | { |
477 | if (!s) | 496 | if (!s) |