diff options
-rw-r--r-- | arch/um/include/os.h | 1 | ||||
-rw-r--r-- | arch/um/kernel/um_arch.c | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/util.c | 6 |
3 files changed, 8 insertions, 1 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index b463170a5308..901804db3c35 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
@@ -279,6 +279,7 @@ extern int raw(int fd); | |||
279 | extern void setup_machinename(char *machine_out); | 279 | extern void setup_machinename(char *machine_out); |
280 | extern void setup_hostinfo(char *buf, int len); | 280 | extern void setup_hostinfo(char *buf, int len); |
281 | extern int setjmp_wrapper(void (*proc)(void *, void *), ...); | 281 | extern int setjmp_wrapper(void (*proc)(void *, void *), ...); |
282 | extern void os_dump_core(void); | ||
282 | 283 | ||
283 | /* time.c */ | 284 | /* time.c */ |
284 | #define BILLION (1000 * 1000 * 1000) | 285 | #define BILLION (1000 * 1000 * 1000) |
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index 9bf31533a8fd..1cf954a47fd7 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c | |||
@@ -474,7 +474,7 @@ static int panic_exit(struct notifier_block *self, unsigned long unused1, | |||
474 | show_regs(&(current->thread.regs)); | 474 | show_regs(&(current->thread.regs)); |
475 | bust_spinlocks(0); | 475 | bust_spinlocks(0); |
476 | uml_exitcode = 1; | 476 | uml_exitcode = 1; |
477 | machine_halt(); | 477 | os_dump_core(); |
478 | return 0; | 478 | return 0; |
479 | } | 479 | } |
480 | 480 | ||
diff --git a/arch/um/os-Linux/util.c b/arch/um/os-Linux/util.c index 48bc4927b996..c307a89ed259 100644 --- a/arch/um/os-Linux/util.c +++ b/arch/um/os-Linux/util.c | |||
@@ -119,3 +119,9 @@ int setjmp_wrapper(void (*proc)(void *, void *), ...) | |||
119 | va_end(args); | 119 | va_end(args); |
120 | return n; | 120 | return n; |
121 | } | 121 | } |
122 | |||
123 | void os_dump_core(void) | ||
124 | { | ||
125 | signal(SIGSEGV, SIG_DFL); | ||
126 | abort(); | ||
127 | } | ||