diff options
| -rw-r--r-- | drivers/mtd/mtdoops.c | 2 | ||||
| -rw-r--r-- | include/linux/kmsg_dump.h | 1 | ||||
| -rw-r--r-- | kernel/kexec.c | 4 | ||||
| -rw-r--r-- | kernel/panic.c | 3 | ||||
| -rw-r--r-- | kernel/printk.c | 1 | 
5 files changed, 9 insertions, 2 deletions
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c index a714ec48276..92e12df0917 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c @@ -322,7 +322,7 @@ static void mtdoops_do_dump(struct kmsg_dumper *dumper,  	memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);  	/* Panics must be written immediately */ -	if (reason == KMSG_DUMP_PANIC) { +	if (reason != KMSG_DUMP_OOPS) {  		if (!cxt->mtd->panic_write)  			printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n");  		else diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index e32aa268efa..24b44145a88 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h @@ -17,6 +17,7 @@  enum kmsg_dump_reason {  	KMSG_DUMP_OOPS,  	KMSG_DUMP_PANIC, +	KMSG_DUMP_KEXEC,  };  /** diff --git a/kernel/kexec.c b/kernel/kexec.c index 433e9fcc1fc..ae217488fef 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c @@ -32,6 +32,7 @@  #include <linux/console.h>  #include <linux/vmalloc.h>  #include <linux/swap.h> +#include <linux/kmsg_dump.h>  #include <asm/page.h>  #include <asm/uaccess.h> @@ -1074,6 +1075,9 @@ void crash_kexec(struct pt_regs *regs)  	if (mutex_trylock(&kexec_mutex)) {  		if (kexec_crash_image) {  			struct pt_regs fixed_regs; + +			kmsg_dump(KMSG_DUMP_KEXEC); +  			crash_setup_regs(&fixed_regs, regs);  			crash_save_vmcoreinfo();  			machine_crash_shutdown(&fixed_regs); diff --git a/kernel/panic.c b/kernel/panic.c index 5827f7b9725..c787333282b 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -75,7 +75,6 @@ NORET_TYPE void panic(const char * fmt, ...)  	dump_stack();  #endif -	kmsg_dump(KMSG_DUMP_PANIC);  	/*  	 * If we have crashed and we have a crash kernel loaded let it handle  	 * everything else. @@ -83,6 +82,8 @@ NORET_TYPE void panic(const char * fmt, ...)  	 */  	crash_kexec(NULL); +	kmsg_dump(KMSG_DUMP_PANIC); +  	/*  	 * Note smp_send_stop is the usual smp shutdown function, which  	 * unfortunately means it may not be hardened to work in a panic diff --git a/kernel/printk.c b/kernel/printk.c index 1ded8e7dd19..2c9dc0b03a5 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -1467,6 +1467,7 @@ EXPORT_SYMBOL_GPL(kmsg_dump_unregister);  static const char const *kmsg_reasons[] = {  	[KMSG_DUMP_OOPS]	= "oops",  	[KMSG_DUMP_PANIC]	= "panic", +	[KMSG_DUMP_KEXEC]	= "kexec",  };  static const char *kmsg_to_str(enum kmsg_dump_reason reason)  |