From nobody Mon Dec 15 22:06:23 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0094F22A7F3 for ; Wed, 15 Jan 2025 02:18:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736907495; cv=none; b=Cme+vvM/vhnl2Ulbjf9t2FqvvnUb8nvv3PHr3XUF6Pa2ODiOEVOOwq3yWZwTo1WAFBYLoiudaUuRi3d33GIF3FrMAls3PvKVgZndKQseezv7KM18CIa6dTa48xnVSYcCz9HLlIxL1fjSDyPKzsDmORvbw+RUW1ZTmoJQHfUF1Hw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736907495; c=relaxed/simple; bh=uuoVWDQrML+TKlIlnqBePkoPbjyvSAz7sUdW9NYuGEI=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=ggHay9jN/R/uDjdA1anJEF9w00ZrZEX9ZrNQPLWN+tShZFXzHcBLDVm1AaFjZaUplBOPXbP72QeDrkHvRWhNUfx2TqJi8+KWG2u5bZTZffPrzd+UcDDiz6ylYqkRSfjzS4iLfVeyGzocOJcwCaJtpoZ+suyC3Ifoh5AS4e9XX/I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0803BC4CEDD; Wed, 15 Jan 2025 02:18:13 +0000 (UTC) Date: Tue, 14 Jan 2025 21:18:15 -0500 From: Steven Rostedt To: LKML Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers Subject: [for-next][PATCH] bpf: Use ftrace_get_symaddr() for kprobe_multi probes Message-ID: <20250114211815.589e01f2@gandalf.local.home> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git ftrace/for-next Head SHA1: 4f7caaa2f92b47e9d27d85f8a60bb7634becd669 Masami Hiramatsu (Google) (1): bpf: Use ftrace_get_symaddr() for kprobe_multi probes ---- kernel/trace/bpf_trace.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) --------------------------- commit 4f7caaa2f92b47e9d27d85f8a60bb7634becd669 Author: Masami Hiramatsu (Google) Date: Wed Jan 1 01:00:14 2025 +0900 bpf: Use ftrace_get_symaddr() for kprobe_multi probes =20 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. =20 Cc: Alexei Starovoitov Cc: Florent Revest Cc: Martin KaFai Lau Cc: bpf Cc: Alexei Starovoitov Cc: Jiri Olsa Cc: Alan Maguire Cc: Mark Rutland Link: https://lore.kernel.org/173566081414.878879.10631096557346094362.= stgit@devnote2 Signed-off-by: Masami Hiramatsu (Google) Signed-off-by: Steven Rostedt (Google) diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 863351559334..9bfd52913a5b 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -2591,6 +2591,13 @@ static DEFINE_PER_CPU(struct pt_regs, bpf_kprobe_mul= ti_pt_regs); #define bpf_kprobe_multi_pt_regs_ptr() (NULL) #endif =20 +static unsigned long ftrace_get_entry_ip(unsigned long fentry_ip) +{ + unsigned long ip =3D ftrace_get_symaddr(fentry_ip); + + return ip ? : fentry_ip; +} + static int copy_user_syms(struct user_syms *us, unsigned long __user *usym= s, u32 cnt) { unsigned long __user usymbol; @@ -2829,7 +2836,8 @@ kprobe_multi_link_handler(struct fprobe *fp, unsigned= long fentry_ip, int err; =20 link =3D container_of(fp, struct bpf_kprobe_multi_link, fp); - err =3D kprobe_multi_link_prog_run(link, get_entry_ip(fentry_ip), fregs, = false, data); + err =3D kprobe_multi_link_prog_run(link, ftrace_get_entry_ip(fentry_ip), + fregs, false, data); return is_kprobe_session(link->link.prog) ? err : 0; } =20 @@ -2841,7 +2849,8 @@ kprobe_multi_link_exit_handler(struct fprobe *fp, uns= igned long fentry_ip, struct bpf_kprobe_multi_link *link; =20 link =3D container_of(fp, struct bpf_kprobe_multi_link, fp); - kprobe_multi_link_prog_run(link, get_entry_ip(fentry_ip), fregs, true, da= ta); + kprobe_multi_link_prog_run(link, ftrace_get_entry_ip(fentry_ip), + fregs, true, data); } =20 static int symbols_cmp_r(const void *a, const void *b, const void *priv)