mbox series

[PATCHv2,bpf-next,0/7] bpf: Introduce kprobe_multi session attach

Message ID 20240430112830.1184228-1-jolsa@kernel.org (mailing list archive)
Headers show
Series bpf: Introduce kprobe_multi session attach | expand

Message

Jiri Olsa April 30, 2024, 11:28 a.m. UTC
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

Comments

patchwork-bot+netdevbpf@kernel.org April 30, 2024, 5:30 p.m. UTC | #1
Hello:

This series was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Tue, 30 Apr 2024 13:28:23 +0200 you wrote:
> 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
> 
> [...]

Here is the summary with links:
  - [PATCHv2,bpf-next,1/7] bpf: Add support for kprobe session attach
    https://git.kernel.org/bpf/bpf-next/c/535a3692ba72
  - [PATCHv2,bpf-next,2/7] bpf: Add support for kprobe session context
    https://git.kernel.org/bpf/bpf-next/c/adf46d88ae4b
  - [PATCHv2,bpf-next,3/7] bpf: Add support for kprobe session cookie
    https://git.kernel.org/bpf/bpf-next/c/5c919acef851
  - [PATCHv2,bpf-next,4/7] libbpf: Add support for kprobe session attach
    https://git.kernel.org/bpf/bpf-next/c/2ca178f02b2f
  - [PATCHv2,bpf-next,5/7] libbpf: Add kprobe session attach type name to attach_type_name
    https://git.kernel.org/bpf/bpf-next/c/7b94965429f2
  - [PATCHv2,bpf-next,6/7] selftests/bpf: Add kprobe session test
    https://git.kernel.org/bpf/bpf-next/c/0983b1697aef
  - [PATCHv2,bpf-next,7/7] selftests/bpf: Add kprobe session cookie test
    https://git.kernel.org/bpf/bpf-next/c/a3a5113393cc

You are awesome, thank you!