hi,
this patchset is adding support for session uprobe attachment and
using it through bpf link for bpf programs.
The session means that the uprobe consumer is executed on entry
and return of probed function with additional control:
- entry callback can control execution of the return callback
- entry and return callbacks can share data/cookie
Uprobe changes (on top of perf/core [1] are posted in here [2].
This patchset is based on bpf-next/master and will be merged once
we pull [2] in bpf-next/master.
v9 changes:
- rebased on bpf-next/master with perf/core tag merged (thanks Peter!)
thanks,
jirka
[1] git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/core
[2] https://lore.kernel.org/bpf/20241018202252.693462-1-jolsa@kernel.org/T/#ma43c549c4bf684ca1b17fa638aa5e7cbb46893e9
---
Jiri Olsa (13):
bpf: Allow return values 0 and 1 for kprobe session
bpf: Force uprobe bpf program to always return 0
bpf: Add support for uprobe multi session attach
bpf: Add support for uprobe multi session context
libbpf: Add support for uprobe multi session attach
selftests/bpf: Add uprobe session test
selftests/bpf: Add uprobe session cookie test
selftests/bpf: Add uprobe session recursive test
selftests/bpf: Add uprobe session verifier test for return value
selftests/bpf: Add kprobe session verifier test for return value
selftests/bpf: Add uprobe session single consumer test
selftests/bpf: Add uprobe sessions to consumer test
selftests/bpf: Add threads to consumer test
include/uapi/linux/bpf.h | 1 +
kernel/bpf/syscall.c | 9 ++-
kernel/bpf/verifier.c | 10 +++
kernel/trace/bpf_trace.c | 57 +++++++++++----
tools/include/uapi/linux/bpf.h | 1 +
tools/lib/bpf/bpf.c | 1 +
tools/lib/bpf/libbpf.c | 19 ++++-
tools/lib/bpf/libbpf.h | 4 +-
tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 2 +
tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c | 337 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
tools/testing/selftests/bpf/progs/kprobe_multi_verifier.c | 31 ++++++++
tools/testing/selftests/bpf/progs/uprobe_multi_consumers.c | 6 +-
tools/testing/selftests/bpf/progs/uprobe_multi_session.c | 71 ++++++++++++++++++
tools/testing/selftests/bpf/progs/uprobe_multi_session_cookie.c | 48 ++++++++++++
tools/testing/selftests/bpf/progs/uprobe_multi_session_recursive.c | 44 +++++++++++
tools/testing/selftests/bpf/progs/uprobe_multi_session_single.c | 44 +++++++++++
tools/testing/selftests/bpf/progs/uprobe_multi_verifier.c | 31 ++++++++
17 files changed, 653 insertions(+), 63 deletions(-)
create mode 100644 tools/testing/selftests/bpf/progs/kprobe_multi_verifier.c
create mode 100644 tools/testing/selftests/bpf/progs/uprobe_multi_session.c
create mode 100644 tools/testing/selftests/bpf/progs/uprobe_multi_session_cookie.c
create mode 100644 tools/testing/selftests/bpf/progs/uprobe_multi_session_recursive.c
create mode 100644 tools/testing/selftests/bpf/progs/uprobe_multi_session_single.c
create mode 100644 tools/testing/selftests/bpf/progs/uprobe_multi_verifier.c