powerpc/ftrace: Also save r1 in ftrace_caller()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 15 Feb 2022 18:31:22 +0000 (19:31 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 16 Feb 2022 12:09:47 +0000 (23:09 +1100)
Also save r1 in ftrace_caller()

r1 is needed during unwinding when the function_graph tracer
is active.

Fixes: 830213786c49 ("powerpc/ftrace: directly call of function graph tracer by ftrace caller")
Reported-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/ff535e86d3a69376a6d89168511d4e403835f18b.1644949750.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/trace/ftrace_mprofile.S

index 56da60e..8443902 100644 (file)
@@ -173,6 +173,10 @@ _GLOBAL(ftrace_caller)
        beq     ftrace_no_trace
 #endif
 
+       /* Save previous stack pointer (r1) */
+       addi    r8, r1, SWITCH_FRAME_SIZE
+       PPC_STL r8, GPR1(r1)
+
        /* Get the _mcount() call site out of LR */
        mflr    r7
        PPC_STL     r7, _NIP(r1)