diff options
author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2015-12-15 17:33:40 +0900 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2015-12-21 17:26:01 +0000 |
commit | fe13f95b720075327a761fe6ddb45b0c90cab504 (patch) | |
tree | 60a9b93da92658289371e6bb2307401bba4bdc5e /arch/arm64/kernel/traps.c | |
parent | 79fdee9b6355c9720f14717e1ad66af51bb331b5 (diff) | |
download | linux-fe13f95b720075327a761fe6ddb45b0c90cab504.tar.gz linux-fe13f95b720075327a761fe6ddb45b0c90cab504.tar.bz2 linux-fe13f95b720075327a761fe6ddb45b0c90cab504.zip |
arm64: pass a task parameter to unwind_frame()
Function graph tracer modifies a return address (LR) in a stack frame
to hook a function's return. This will result in many useless entries
(return_to_handler) showing up in a call stack list.
We will fix this problem in a later patch ("arm64: ftrace: fix a stack
tracer's output under function graph tracer"). But since real return
addresses are saved in ret_stack[] array in struct task_struct,
unwind functions need to be notified of, in addition to a stack pointer
address, which task is being traced in order to find out real return
addresses.
This patch extends unwind functions' interfaces by adding an extra
argument of a pointer to task_struct.
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/traps.c')
-rw-r--r-- | arch/arm64/kernel/traps.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index 8a0084541f84..937008523fa5 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -177,7 +177,7 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) int ret; dump_backtrace_entry(where); - ret = unwind_frame(&frame); + ret = unwind_frame(tsk, &frame); if (ret < 0) break; stack = frame.sp; |