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: <20241226212339.2f871f94@batman.local.home>
Date: Thu, 26 Dec 2024 21:23:39 -0500
From: Steven Rostedt <rostedt@...dmis.org>
To: "Masami Hiramatsu (Google)" <mhiramat@...nel.org>
Cc: Alexei Starovoitov <alexei.starovoitov@...il.com>, Florent Revest
 <revest@...omium.org>, linux-trace-kernel@...r.kernel.org, LKML
 <linux-kernel@...r.kernel.org>, Martin KaFai Lau <martin.lau@...ux.dev>,
 bpf <bpf@...r.kernel.org>, Alexei Starovoitov <ast@...nel.org>, Jiri Olsa
 <jolsa@...nel.org>, Alan Maguire <alan.maguire@...cle.com>, Mark Rutland
 <mark.rutland@....com>, linux-arch@...r.kernel.org
Subject: Re: [PATCH v22 20/20] bpf: Use ftrace_get_symaddr() for
 kprobe_multi probes

On Thu, 26 Dec 2024 14:15:25 +0900
"Masami Hiramatsu (Google)" <mhiramat@...nel.org> wrote:

> From: Masami Hiramatsu (Google) <mhiramat@...nel.org>
> 
> Add ftrace_get_entry_ip() which is only for ftrace based probes, and use
> it for kprobe multi probes because they are based on fprobe which uses
> ftrace instead of kprobes.
> 
> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@...nel.org>

On my 32bit build, I hit a new warning;

kernel/trace/bpf_trace.c:1073:22: warning: ‘ftrace_get_entry_ip’ defined but not used [-Wunused-function]
 1073 | static unsigned long ftrace_get_entry_ip(unsigned long fentry_ip)
      |                      ^~~~~~~~~~~~~~~~~~~

Config attached.

-- Steve


> ---
>  Changes in v21:
>   - Use new ftreace_get_symaddr() only for kprobe multi probes.
>  Changes in v19:
>   - Use ftrace_get_symaddr() instead of introducing new arch dependent code.
>   - Also, replace x86 code with ftrace_get_symaddr(), which does the same
>    thing.
> ---
>  kernel/trace/bpf_trace.c |   13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
> index 863351559334..47beb70187d7 100644
> --- a/kernel/trace/bpf_trace.c
> +++ b/kernel/trace/bpf_trace.c
> @@ -1070,6 +1070,13 @@ static unsigned long get_entry_ip(unsigned long fentry_ip)
>  #define get_entry_ip(fentry_ip) fentry_ip
>  #endif
>  
> +static unsigned long ftrace_get_entry_ip(unsigned long fentry_ip)
> +{
> +	unsigned long ip = ftrace_get_symaddr(fentry_ip);
> +
> +	return ip ? : fentry_ip;
> +}
> +
>  BPF_CALL_1(bpf_get_func_ip_kprobe, struct pt_regs *, regs)
>  {
>  	struct bpf_trace_run_ctx *run_ctx __maybe_unused;
> @@ -2829,7 +2836,8 @@ kprobe_multi_link_handler(struct fprobe *fp, unsigned long fentry_ip,
>  	int err;
>  
>  	link = container_of(fp, struct bpf_kprobe_multi_link, fp);
> -	err = kprobe_multi_link_prog_run(link, get_entry_ip(fentry_ip), fregs, false, data);
> +	err = kprobe_multi_link_prog_run(link, ftrace_get_entry_ip(fentry_ip),
> +					 fregs, false, data);
>  	return is_kprobe_session(link->link.prog) ? err : 0;
>  }
>  
> @@ -2841,7 +2849,8 @@ kprobe_multi_link_exit_handler(struct fprobe *fp, unsigned long fentry_ip,
>  	struct bpf_kprobe_multi_link *link;
>  
>  	link = container_of(fp, struct bpf_kprobe_multi_link, fp);
> -	kprobe_multi_link_prog_run(link, get_entry_ip(fentry_ip), fregs, true, data);
> +	kprobe_multi_link_prog_run(link, ftrace_get_entry_ip(fentry_ip),
> +				   fregs, true, data);
>  }
>  
>  static int symbols_cmp_r(const void *a, const void *b, const void *priv)


Download attachment "config" of type "application/octet-stream" (162875 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ