[PATCHv9 bpf-next 00/13] bpf: Add uprobe session support

Jiri Olsa posted 13 patches 2 weeks, 1 day ago
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
[PATCHv9 bpf-next 00/13] bpf: Add uprobe session support
Posted by Jiri Olsa 2 weeks, 1 day ago
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