powerpc64/ftrace: Fix ftrace for clang builds
commit cb928ac192128c842f4c1cfc8b6780b95719d65f upstream. 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: stable@vger.kernel.org # v5.19+ Reported-by: Nick Desaulniers <ndesaulniers@google.com> Reported-by: Ondrej Mosnacek <omosnacek@gmail.com> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Tested-by: Ondrej Mosnacek <omosnacek@gmail.com> Acked-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://github.com/llvm/llvm-project/issues/57031 Link: https://github.com/ClangBuiltLinux/linux/issues/1682 Link: https://lore.kernel.org/r/20220809095907.418764-1-naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bb0be69e1d
commit
0e5ca33839
@ -392,11 +392,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
|
||||
@ -411,7 +411,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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user