lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220726113910.5b2cac1c@gandalf.local.home>
Date:   Tue, 26 Jul 2022 11:39:10 -0400
From:   Steven Rostedt <rostedt@...dmis.org>
To:     WangJingjin <wangjingjin1@...wei.com>
Cc:     <mingo@...hat.com>, <daniel@...earbox.net>, <song@...nel.org>,
        <linux-kernel@...r.kernel.org>, <zhengbin13@...wei.com>,
        <gaochao49@...wei.com>
Subject: Re: [PATCH -next] ftrace: Fix build error whithout CONFIG_MODULES

On Tue, 26 Jul 2022 19:35:38 +0800
WangJingjin <wangjingjin1@...wei.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@...wei.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ