aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/um/include/os.h1
-rw-r--r--arch/um/kernel/um_arch.c2
-rw-r--r--arch/um/os-Linux/util.c6
3 files changed, 8 insertions, 1 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h
index b463170a530..901804db3c3 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/os.h
@@ -279,6 +279,7 @@ extern int raw(int fd);
extern void setup_machinename(char *machine_out);
extern void setup_hostinfo(char *buf, int len);
extern int setjmp_wrapper(void (*proc)(void *, void *), ...);
+extern void os_dump_core(void);
/* time.c */
#define BILLION (1000 * 1000 * 1000)
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c
index 9bf31533a8f..1cf954a47fd 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,
show_regs(&(current->thread.regs));
bust_spinlocks(0);
uml_exitcode = 1;
- machine_halt();
+ os_dump_core();
return 0;
}
diff --git a/arch/um/os-Linux/util.c b/arch/um/os-Linux/util.c
index 48bc4927b99..c307a89ed25 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 *), ...)
va_end(args);
return n;
}
+
+void os_dump_core(void)
+{
+ signal(SIGSEGV, SIG_DFL);
+ abort();
+}