]> Git Repo - J-linux.git/commitdiff
powerpc64/ftrace: Fix ftrace for clang builds
authorNaveen N. Rao <[email protected]>
Tue, 9 Aug 2022 09:59:07 +0000 (15:29 +0530)
committerMichael Ellerman <[email protected]>
Wed, 10 Aug 2022 05:38:16 +0000 (15:38 +1000)
Clang doesn't support -mprofile-kernel ABI, so guard the checks against
CONFIG_DYNAMIC_FTRACE_WITH_REGS, rather than the elf ABI version.

Fixes: 23b44fc248f4 ("powerpc/ftrace: Make __ftrace_make_{nop/call}() common to PPC32 and PPC64")
Cc: [email protected] # v5.19+
Reported-by: Nick Desaulniers <[email protected]>
Reported-by: Ondrej Mosnacek <[email protected]>
Signed-off-by: Naveen N. Rao <[email protected]>
Tested-by: Ondrej Mosnacek <[email protected]>
Acked-by: Nick Desaulniers <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
Link: https://github.com/llvm/llvm-project/issues/57031
Link: https://github.com/ClangBuiltLinux/linux/issues/1682
Link: https://lore.kernel.org/r/[email protected]
arch/powerpc/kernel/trace/ftrace.c

index cb158c32b50b9942e59ff59f129005235c2043ab..7b85c3b460a3c048ec31cce44e9b21066b96c5a8 100644 (file)
@@ -393,11 +393,11 @@ int ftrace_make_nop(struct module *mod,
  */
 static bool expected_nop_sequence(void *ip, ppc_inst_t op0, ppc_inst_t op1)
 {
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1))
+       if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE_WITH_REGS))
+               return ppc_inst_equal(op0, ppc_inst(PPC_RAW_NOP()));
+       else
                return ppc_inst_equal(op0, ppc_inst(PPC_RAW_BRANCH(8))) &&
                       ppc_inst_equal(op1, ppc_inst(PPC_INST_LD_TOC));
-       else
-               return ppc_inst_equal(op0, ppc_inst(PPC_RAW_NOP()));
 }
 
 static int
@@ -412,7 +412,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
        if (copy_inst_from_kernel_nofault(op, ip))
                return -EFAULT;
 
-       if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1) &&
+       if (!IS_ENABLED(CONFIG_DYNAMIC_FTRACE_WITH_REGS) &&
            copy_inst_from_kernel_nofault(op + 1, ip + 4))
                return -EFAULT;
 
This page took 0.06843 seconds and 4 git commands to generate.