From: Jiri Olsa <jolsa@kernel.org>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>
Cc: bpf@vger.kernel.org, Martin KaFai Lau <kafai@fb.com>,
Song Liu <songliubraving@fb.com>, Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@chromium.org>,
Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
Viktor Malik <vmalik@redhat.com>,
"Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Subject: [PATCHv2 bpf-next 0/7] bpf: Introduce kprobe_multi session attach
Date: Tue, 30 Apr 2024 13:28:23 +0200 [thread overview]
Message-ID: <20240430112830.1184228-1-jolsa@kernel.org> (raw)
hi,
adding support to attach kprobe program through kprobe_multi link
in a session mode, which means:
- program is attached to both function entry and return
- entry program can decided if the return program gets executed
- entry program can share u64 cookie value with return program
The initial RFC for this was posted in [0] and later discussed more
and which ended up with the session idea [1]
Having entry together with return probe for given function is common
use case for tetragon, bpftrace and most likely for others.
At the moment if we want both entry and return probe to execute bpf
program we need to create two (entry and return probe) links. The link
for return probe creates extra entry probe to setup the return probe.
The extra entry probe execution could be omitted if we had a way to
use just single link for both entry and exit probe.
In addition the possibility to control the return program execution
and sharing data within entry and return probe allows for other use
cases.
v2 changes:
- renamed BPF_TRACE_KPROBE_MULTI_SESSION to BPF_TRACE_KPROBE_SESSION
[Andrii]
- use arrays for results in selftest [Andrii]
- various small selftests and libbpf changes [Andrii]
- moved the verifier cookie setup earlier in check_kfunc_call [Andrii]
- added acks
Also available at:
https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
bpf/session_data
thanks,
jirka
[0] https://lore.kernel.org/bpf/20240207153550.856536-1-jolsa@kernel.org/
[1] https://lore.kernel.org/bpf/20240228090242.4040210-1-jolsa@kernel.org/
---
Jiri Olsa (7):
bpf: Add support for kprobe session attach
bpf: Add support for kprobe session context
bpf: Add support for kprobe session cookie
libbpf: Add support for kprobe session attach
libbpf: Add kprobe session attach type name to attach_type_name
selftests/bpf: Add kprobe session test
selftests/bpf: Add kprobe session cookie test
include/uapi/linux/bpf.h | 1 +
kernel/bpf/btf.c | 3 +++
kernel/bpf/syscall.c | 7 +++++-
kernel/bpf/verifier.c | 7 ++++++
kernel/trace/bpf_trace.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
tools/include/uapi/linux/bpf.h | 1 +
tools/lib/bpf/bpf.c | 1 +
tools/lib/bpf/libbpf.c | 40 +++++++++++++++++++++++++++++++--
tools/lib/bpf/libbpf.h | 4 +++-
tools/testing/selftests/bpf/bpf_kfuncs.h | 3 +++
tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/bpf/progs/kprobe_multi_session.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/bpf/progs/kprobe_multi_session_cookie.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
13 files changed, 365 insertions(+), 18 deletions(-)
create mode 100644 tools/testing/selftests/bpf/progs/kprobe_multi_session.c
create mode 100644 tools/testing/selftests/bpf/progs/kprobe_multi_session_cookie.c
next reply other threads:[~2024-04-30 11:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-30 11:28 Jiri Olsa [this message]
2024-04-30 11:28 ` [PATCHv2 bpf-next 1/7] bpf: Add support for kprobe session attach Jiri Olsa
2024-04-30 11:28 ` [PATCHv2 bpf-next 2/7] bpf: Add support for kprobe session context Jiri Olsa
2024-04-30 11:28 ` [PATCHv2 bpf-next 3/7] bpf: Add support for kprobe session cookie Jiri Olsa
2024-04-30 11:28 ` [PATCHv2 bpf-next 4/7] libbpf: Add support for kprobe session attach Jiri Olsa
2024-05-01 18:30 ` Andrii Nakryiko
2024-05-01 19:32 ` Jiri Olsa
2024-04-30 11:28 ` [PATCHv2 bpf-next 5/7] libbpf: Add kprobe session attach type name to attach_type_name Jiri Olsa
2024-04-30 11:28 ` [PATCHv2 bpf-next 6/7] selftests/bpf: Add kprobe session test Jiri Olsa
2024-04-30 17:29 ` Andrii Nakryiko
2024-05-01 9:05 ` Jiri Olsa
2024-05-01 16:27 ` Andrii Nakryiko
2024-04-30 11:28 ` [PATCHv2 bpf-next 7/7] selftests/bpf: Add kprobe session cookie test Jiri Olsa
2024-04-30 17:30 ` [PATCHv2 bpf-next 0/7] bpf: Introduce kprobe_multi session attach patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240430112830.1184228-1-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@chromium.org \
--cc=mhiramat@kernel.org \
--cc=sdf@google.com \
--cc=songliubraving@fb.com \
--cc=vmalik@redhat.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).