From 80bb126d6b014dbf1d6a28c4b3f6d3cb56fbaba5 Mon Sep 17 00:00:00 2001 From: Jens Wiklander Date: Wed, 5 Jul 2017 22:06:37 +0200 Subject: [PATCH] core: fix print_kernel_stack() Previously was print_kernel_stack() supplying zeroes instead of real values for start and size of exidx tables needed for unwind. With this patch are correct values for exidx and exidx_sz supplied. Tested-by: Etienne Carriere (b2260) Reviewed-by: Jerome Forissier Fixes: 31a2964 ("core: dump call stack of user TAs on abort") Tested-by: Jens Wiklander (QEMU) Signed-off-by: Jens Wiklander --- core/arch/arm/kernel/unwind_arm32.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/arch/arm/kernel/unwind_arm32.c b/core/arch/arm/kernel/unwind_arm32.c index 597c154d777..aa63bcb3fac 100644 --- a/core/arch/arm/kernel/unwind_arm32.c +++ b/core/arch/arm/kernel/unwind_arm32.c @@ -30,6 +30,7 @@ */ #include +#include #include #include #include @@ -360,6 +361,8 @@ bool unwind_stack_arm32(struct unwind_state_arm32 *state, uaddr_t exidx, void print_kernel_stack(int level) { struct unwind_state_arm32 state; + uaddr_t exidx = (vaddr_t)__exidx_start; + size_t exidx_sz = (vaddr_t)__exidx_end - (vaddr_t)__exidx_start; memset(state.registers, 0, sizeof(state.registers)); /* r7: Thumb-style frame pointer */ @@ -387,7 +390,7 @@ void print_kernel_stack(int level) default: break; } - } while (unwind_stack_arm32(&state, 0, 0)); + } while (unwind_stack_arm32(&state, exidx, exidx_sz)); } #endif