diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2022-01-25 11:20:49 +0100 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2022-02-09 09:12:33 +0100 |
commit | 953f534a7ed6b725d4f101d2949393acc9262880 (patch) | |
tree | 7df80887659d9b3f7efb288b11bec86b8c7651c7 /arch/arm/kernel/ftrace.c | |
parent | ARM: ftrace: avoid unnecessary literal loads (diff) | |
download | linux-953f534a7ed6b725d4f101d2949393acc9262880.tar.xz linux-953f534a7ed6b725d4f101d2949393acc9262880.zip |
ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST
Fix the frame pointer handling in the function graph tracer entry and
exit code so we can enable HAVE_FUNCTION_GRAPH_FP_TEST. Instead of using
FP directly (which will have different values between the entry and exit
pieces of the function graph tracer), use the value of SP at entry and
exit, as we can derive the former value from the frame pointer.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Diffstat (limited to 'arch/arm/kernel/ftrace.c')
-rw-r--r-- | arch/arm/kernel/ftrace.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c index 74d3913f5590..ea2396900c7d 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c @@ -233,6 +233,11 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, if (unlikely(atomic_read(¤t->tracing_graph_pause))) return; + if (IS_ENABLED(CONFIG_UNWINDER_FRAME_POINTER)) { + /* FP points one word below parent's top of stack */ + frame_pointer += 4; + } + old = *parent; *parent = return_hooker; |