diff options
author | Richard Weinberger <richard@nod.at> | 2013-09-23 17:38:02 +0200 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2013-11-17 11:27:30 +0100 |
commit | f72c22e45e8f8fe78c7f793d983bee5bed63497e (patch) | |
tree | 0e3051e2d357548d086a2ac00c4bfe201fe4e31d /arch/um/include/asm | |
parent | 9d1ee8ce92e16c6aa0a3fd91ee8ed9e403b3a2eb (diff) | |
download | op-kernel-dev-f72c22e45e8f8fe78c7f793d983bee5bed63497e.zip op-kernel-dev-f72c22e45e8f8fe78c7f793d983bee5bed63497e.tar.gz |
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.h | 1 |
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 c03cd5a..9046903 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; |