Message ID | 20230324171451.2752302-3-revest@chromium.org (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | Add ftrace direct call for arm64 | expand |
On Fri, Mar 24, 2023 at 06:14:49PM +0100, Florent Revest wrote: > Following recent refactorings, the get_ftrace_plt function only ever > gets called with addr = FTRACE_ADDR so its code can be simplified to > always return the ftrace trampoline plt. > > Signed-off-by: Florent Revest <revest@chromium.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Mark. > --- > arch/arm64/kernel/ftrace.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c > index 758436727fba..432626c866a8 100644 > --- a/arch/arm64/kernel/ftrace.c > +++ b/arch/arm64/kernel/ftrace.c > @@ -195,15 +195,15 @@ int ftrace_update_ftrace_func(ftrace_func_t func) > return ftrace_modify_code(pc, 0, new, false); > } > > -static struct plt_entry *get_ftrace_plt(struct module *mod, unsigned long addr) > +static struct plt_entry *get_ftrace_plt(struct module *mod) > { > #ifdef CONFIG_ARM64_MODULE_PLTS > struct plt_entry *plt = mod->arch.ftrace_trampolines; > > - if (addr == FTRACE_ADDR) > - return &plt[FTRACE_PLT_IDX]; > -#endif > + return &plt[FTRACE_PLT_IDX]; > +#else > return NULL; > +#endif > } > > static bool reachable_by_bl(unsigned long addr, unsigned long pc) > @@ -270,7 +270,7 @@ static bool ftrace_find_callable_addr(struct dyn_ftrace *rec, > if (WARN_ON(!mod)) > return false; > > - plt = get_ftrace_plt(mod, *addr); > + plt = get_ftrace_plt(mod); > if (!plt) { > pr_err("ftrace: no module PLT for %ps\n", (void *)*addr); > return false; > -- > 2.40.0.348.gf938b09366-goog >
diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c index 758436727fba..432626c866a8 100644 --- a/arch/arm64/kernel/ftrace.c +++ b/arch/arm64/kernel/ftrace.c @@ -195,15 +195,15 @@ int ftrace_update_ftrace_func(ftrace_func_t func) return ftrace_modify_code(pc, 0, new, false); } -static struct plt_entry *get_ftrace_plt(struct module *mod, unsigned long addr) +static struct plt_entry *get_ftrace_plt(struct module *mod) { #ifdef CONFIG_ARM64_MODULE_PLTS struct plt_entry *plt = mod->arch.ftrace_trampolines; - if (addr == FTRACE_ADDR) - return &plt[FTRACE_PLT_IDX]; -#endif + return &plt[FTRACE_PLT_IDX]; +#else return NULL; +#endif } static bool reachable_by_bl(unsigned long addr, unsigned long pc) @@ -270,7 +270,7 @@ static bool ftrace_find_callable_addr(struct dyn_ftrace *rec, if (WARN_ON(!mod)) return false; - plt = get_ftrace_plt(mod, *addr); + plt = get_ftrace_plt(mod); if (!plt) { pr_err("ftrace: no module PLT for %ps\n", (void *)*addr); return false;
Following recent refactorings, the get_ftrace_plt function only ever gets called with addr = FTRACE_ADDR so its code can be simplified to always return the ftrace trampoline plt. Signed-off-by: Florent Revest <revest@chromium.org> --- arch/arm64/kernel/ftrace.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)