powerpc/ftrace: ensure ftrace record ops are always set for NOPs

When an ftrace call site is converted to a NOP, its corresponding
dyn_ftrace record should have its ftrace_ops pointer set to
ftrace_nop_ops.

Correct the powerpc implementation to ensure the
ftrace_rec_set_nop_ops() helper is called on all successful NOP
initialization paths. This ensures all ftrace records are consistent
before being handled by the ftrace core.

Fixes: eec37961a5 ("powerpc64/ftrace: Move ftrace sequence out of line")
Suggested-by: Naveen N Rao <naveen@kernel.org>
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Naveen N Rao (AMD) <naveen@kernel.org>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20250912142740.3581368-2-joe.lawrence@redhat.com
This commit is contained in:
Joe Lawrence
2025-09-15 16:40:52 +05:30
committed by Madhavan Srinivasan
parent f2863371f0
commit 5337609a31
+8 -2
View File
@@ -488,8 +488,10 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
return ret;
/* Set up out-of-line stub */
if (IS_ENABLED(CONFIG_PPC_FTRACE_OUT_OF_LINE))
return ftrace_init_ool_stub(mod, rec);
if (IS_ENABLED(CONFIG_PPC_FTRACE_OUT_OF_LINE)) {
ret = ftrace_init_ool_stub(mod, rec);
goto out;
}
/* Nop-out the ftrace location */
new = ppc_inst(PPC_RAW_NOP());
@@ -520,6 +522,10 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
return -EINVAL;
}
out:
if (!ret)
ret = ftrace_rec_set_nop_ops(rec);
return ret;
}