On 10 November 2026 08:57:28 GMT, "Christophe Leroy (CS GROUP)" <[email protected]> wrote: > > >Le 23/09/2026 à 19:56, Bradley Morgan a écrit : >> Commit 7dfbfb87c243 ("powerpc/ftrace: Activate >> HAVE_DYNAMIC_FTRACE_WITH_REGS on PPC32") made count_relocs() >> undercount the PLT entries the loader >> consumes: module_finalize_ftrace() now creates two trampolines >> (mod->arch.tramp for ftrace_caller() and mod->arch.tramp_regs for >> ftrace_regs_caller()), while count_relocs() reserves only one entry >> for ftrace. >> >> So the core .plt ends up one ppc_plt_entry (16 bytes) short. The >> walk in do_plt_call() scans for a free slot with >> "while (entry->jump[0])" and has no bound check, so once the last >> reserved slot is used up, the walk steps past the end of the section >> and patch_instruction() writes the 4-instruction trampoline into >> whatever module memory follows the .plt. >> >> Count the second entry, mirroring what module_64.c does for the same >> pair of stubs. >> >> Signed-off-by: Bradley Morgan <[email protected]> > >I would have had a preference for something similar to commit c12cfe9dee07 >("powerpc/module_64: Convert #ifdef to IS_ENABLED()") > >Nevertheless, > >Reviewed-by: Christophe Leroy (CS GROUP) <[email protected]>
Thx, now the good question will be, who merges? > > > >> --- >> arch/powerpc/kernel/module_32.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/arch/powerpc/kernel/module_32.c >b/arch/powerpc/kernel/module_32.c >> index f930e3395a7f..61152deffc55 100644 >> --- a/arch/powerpc/kernel/module_32.c >> +++ b/arch/powerpc/kernel/module_32.c >> @@ -41,6 +41,9 @@ static unsigned int count_relocs(const Elf32_Rela >*rela, unsigned int num) >> #ifdef CONFIG_DYNAMIC_FTRACE >> _count_relocs++; /* add one for ftrace_caller */ >> +#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS >> + _count_relocs++; /* add one for ftrace_regs_caller */ >> +#endif >> #endif >> return _count_relocs; >> } > --- Thanks!
