summaryrefslogtreecommitdiffstats
path: root/arch/um/include/asm
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2013-09-23 17:38:02 +0200
committerRichard Weinberger <richard@nod.at>2013-11-17 11:27:30 +0100
commitf72c22e45e8f8fe78c7f793d983bee5bed63497e (patch)
tree0e3051e2d357548d086a2ac00c4bfe201fe4e31d /arch/um/include/asm
parent9d1ee8ce92e16c6aa0a3fd91ee8ed9e403b3a2eb (diff)
downloadblackbird-op-linux-f72c22e45e8f8fe78c7f793d983bee5bed63497e.tar.gz
blackbird-op-linux-f72c22e45e8f8fe78c7f793d983bee5bed63497e.zip
um: Make stack trace reliable against kernel mode faults
As UML uses an alternative signal stack we cannot use the current stack pointer for stack dumping if UML itself dies by SIGSEGV. To bypass this issue we save regs taken from mcontext in our segv handler into thread_struct and use these regs to obtain the stack pointer in show_stack(). Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/include/asm')
-rw-r--r--arch/um/include/asm/processor-generic.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/um/include/asm/processor-generic.h b/arch/um/include/asm/processor-generic.h
index c03cd5a02364..90469031297b 100644
--- a/arch/um/include/asm/processor-generic.h
+++ b/arch/um/include/asm/processor-generic.h
@@ -21,6 +21,7 @@ struct mm_struct;
struct thread_struct {
struct task_struct *saved_task;
struct pt_regs regs;
+ struct pt_regs *segv_regs;
int singlestep_syscall;
void *fault_addr;
jmp_buf *fault_catcher;
OpenPOWER on IntegriCloud