diff options
author | Kees Cook <keescook@chromium.org> | 2013-09-11 17:25:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-11 18:59:30 -0400 |
commit | 6723734cdff15211bb78aeea76ca847374bd93ae (patch) | |
tree | 0c28ac52a1473dbbbeb32dfc893ebe285cc989bc /kernel/panic.c | |
parent | 6325932666540beea18c800016368dc921068611 (diff) |
panic: call panic handlers before kmsg_dump
Since the panic handlers may produce additional information (via printk)
for the kernel log, it should be reported as part of the panic output
saved by kmsg_dump(). Without this re-ordering, nothing that adds
information to a panic will show up in pstore's view when kmsg_dump runs,
and is therefore not visible to crash reporting tools that examine pstore
output.
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Anton Vorontsov <anton@enomsg.org>
Cc: Colin Cross <ccross@android.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Vikram Mulukutla <markivx@codeaurora.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/panic.c')
-rw-r--r-- | kernel/panic.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index 801864600514..b6c482ccc5db 100644 --- a/kernel/panic.c +++ b/kernel/panic.c | |||
@@ -123,10 +123,14 @@ void panic(const char *fmt, ...) | |||
123 | */ | 123 | */ |
124 | smp_send_stop(); | 124 | smp_send_stop(); |
125 | 125 | ||
126 | kmsg_dump(KMSG_DUMP_PANIC); | 126 | /* |
127 | 127 | * Run any panic handlers, including those that might need to | |
128 | * add information to the kmsg dump output. | ||
129 | */ | ||
128 | atomic_notifier_call_chain(&panic_notifier_list, 0, buf); | 130 | atomic_notifier_call_chain(&panic_notifier_list, 0, buf); |
129 | 131 | ||
132 | kmsg_dump(KMSG_DUMP_PANIC); | ||
133 | |||
130 | bust_spinlocks(0); | 134 | bust_spinlocks(0); |
131 | 135 | ||
132 | if (!panic_blink) | 136 | if (!panic_blink) |