powerpc/ftrace: Refactor ftrace_{en/dis}able_ftrace_graph_caller
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Mon, 20 Dec 2021 16:38:31 +0000 (16:38 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 7 Feb 2022 10:03:11 +0000 (21:03 +1100)
ftrace_enable_ftrace_graph_caller() and
ftrace_disable_ftrace_graph_caller() have common code.

They will have even more common code after following patch.

Refactor into a single ftrace_modify_ftrace_graph_caller() function.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/f37785a531f1a8f201e1b3da45997a5c77e9d820.1640017960.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/trace/ftrace.c

index 80b6285..ce67376 100644 (file)
@@ -910,30 +910,27 @@ int __init ftrace_dyn_arch_init(void)
 extern void ftrace_graph_call(void);
 extern void ftrace_graph_stub(void);
 
-int ftrace_enable_ftrace_graph_caller(void)
+static int ftrace_modify_ftrace_graph_caller(bool enable)
 {
        unsigned long ip = (unsigned long)(&ftrace_graph_call);
        unsigned long addr = (unsigned long)(&ftrace_graph_caller);
        unsigned long stub = (unsigned long)(&ftrace_graph_stub);
        ppc_inst_t old, new;
 
-       old = ftrace_call_replace(ip, stub, 0);
-       new = ftrace_call_replace(ip, addr, 0);
+       old = ftrace_call_replace(ip, enable ? stub : addr, 0);
+       new = ftrace_call_replace(ip, enable ? addr : stub, 0);
 
        return ftrace_modify_code(ip, old, new);
 }
 
-int ftrace_disable_ftrace_graph_caller(void)
+int ftrace_enable_ftrace_graph_caller(void)
 {
-       unsigned long ip = (unsigned long)(&ftrace_graph_call);
-       unsigned long addr = (unsigned long)(&ftrace_graph_caller);
-       unsigned long stub = (unsigned long)(&ftrace_graph_stub);
-       ppc_inst_t old, new;
-
-       old = ftrace_call_replace(ip, addr, 0);
-       new = ftrace_call_replace(ip, stub, 0);
+       return ftrace_modify_ftrace_graph_caller(true);
+}
 
-       return ftrace_modify_code(ip, old, new);
+int ftrace_disable_ftrace_graph_caller(void)
+{
+       return ftrace_modify_ftrace_graph_caller(false);
 }
 
 /*