Messages in this thread | | | Date | Tue, 26 Jul 2022 11:39:10 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH -next] ftrace: Fix build error whithout CONFIG_MODULES |
| |
On Tue, 26 Jul 2022 19:35:38 +0800 WangJingjin <wangjingjin1@huawei.com> wrote:
> Fix build errors on kernel/trace/ftrace.c: > ‘ops_references_rec’ defined but not used. > > Fixes: 53cd885bc5c3 ("ftrace: Allow IPMODIFY and DIRECT ops on the same function") > Signed-off-by: Wang Jingjin <wangjingjin1@huawei.com> > --- > kernel/trace/ftrace.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c > index bc921a3f7ea8..16d3d3884e17 100644 > --- a/kernel/trace/ftrace.c > +++ b/kernel/trace/ftrace.c > @@ -1861,8 +1861,6 @@ static void ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, > ftrace_hash_rec_update_modify(ops, filter_hash, 1); > } > > -static bool ops_references_ip(struct ftrace_ops *ops, unsigned long ip); > - > /* > * Try to update IPMODIFY flag on each ftrace_rec. Return 0 if it is OK > * or no-needed to update, -EBUSY if it detects a conflict of the flag > @@ -3108,6 +3106,7 @@ static inline int ops_traces_mod(struct ftrace_ops *ops) > ftrace_hash_empty(ops->func_hash->notrace_hash); > } > > +#if defined(CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS) || defined(CONFIG_MODULES)
Honesly, this block needs to be moved down to closer to where it is first used (just above the #ifdef CONFIG_MODULES).
> /* > * Check if the current ops references the given ip. > * > @@ -3137,19 +3136,7 @@ ops_references_ip(struct ftrace_ops *ops, unsigned long ip) > > return true; > } > - > -/* > - * Check if the current ops references the record. > - * > - * If the ops traces all functions, then it was already accounted for. > - * If the ops does not trace the current record function, skip it. > - * If the ops ignores the function via notrace filter, skip it. > - */ > -static bool > -ops_references_rec(struct ftrace_ops *ops, struct dyn_ftrace *rec) > -{ > - return ops_references_ip(ops, rec->ip); > -} > +#endif > > static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs) > { > @@ -6818,6 +6805,19 @@ static int ftrace_get_trampoline_kallsym(unsigned int symnum, > > static LIST_HEAD(ftrace_mod_maps); > > +/* > + * Check if the current ops references the record. > + * > + * If the ops traces all functions, then it was already accounted for. > + * If the ops does not trace the current record function, skip it. > + * If the ops ignores the function via notrace filter, skip it. > + */ > +static bool > +ops_references_rec(struct ftrace_ops *ops, struct dyn_ftrace *rec) > +{ > + return ops_references_ip(ops, rec->ip); > +}
And we should just nuke this function, and call the ops_references_ip() directly, as it is only used in one location.
static int referenced_filters(struct dyn_ftrace *rec) { struct ftrace_ops *ops; int cnt = 0; for (ops = ftrace_ops_list; ops != &ftrace_list_end; ops = ops->next) { - if (ops_references_rec(ops, rec)) { + if (ops_references_ip(ops, rec->ip)) { if (WARN_ON_ONCE(ops->flags & FTRACE_OPS_FL_DIRECT)) continue; if (WARN_ON_ONCE(ops->flags & FTRACE_OPS_FL_IPMODIFY))
-- Steve
> + > static int referenced_filters(struct dyn_ftrace *rec) > { > struct ftrace_ops *ops; > -- > 2.25.1
| |