bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/7] bpf: Introduce kprobe_multi session attach
@ 2024-04-22 12:12 Jiri Olsa
  2024-04-22 12:12 ` [PATCH bpf-next 1/7] bpf: Add support for kprobe multi " Jiri Olsa
                   ` (7 more replies)
  0 siblings, 8 replies; 28+ messages in thread
From: Jiri Olsa @ 2024-04-22 12:12 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko
  Cc: bpf, Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend,
	KP Singh, Stanislav Fomichev, Hao Luo, Viktor Malik,
	Masami Hiramatsu (Google)

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.

Changes from last RFC version [1]:
  - changed wrapper name to session 
  - changed flag to adding new attach type for session:
      BPF_TRACE_KPROBE_MULTI_SESSION
    it's more convenient wrt filtering on kfuncs setup and seems
    to make more sense alltogether
  - renamed bpf_kprobe_multi_is_return to bpf_session_is_return
  - added bpf_session_cookie kfunc, which actually already works
    on current fprobe implementation (not just fprobe-on-fgraph)
    and it provides the shared data between entry/return probes [Andrii]

    we could actually make the cookie size configurable.. thoughts?
    (it's 8 bytes atm)

  - better attach setup conditions changes [Andrii]
  - I'm not including uprobes change atm, because it needs extra
    uprobe change so I'll post it separately

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 multi session attach
      bpf: Add support for kprobe multi session context
      bpf: Add support for kprobe multi session cookie
      libbpf: Add support for kprobe multi session attach
      libbpf: Add kprobe session attach type name to attach_type_name
      selftests/bpf: Add kprobe multi session test
      selftests/bpf: Add kprobe multi wrapper 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                                          |  41 ++++++++++++++++++++++++++++++++--
 tools/lib/bpf/libbpf.h                                          |   4 +++-
 tools/testing/selftests/bpf/bpf_kfuncs.h                        |   3 +++
 tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c      |  84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/testing/selftests/bpf/progs/kprobe_multi_session.c        | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/testing/selftests/bpf/progs/kprobe_multi_session_cookie.c |  56 ++++++++++++++++++++++++++++++++++++++++++++++
 13 files changed, 396 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

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2024-04-30  8:10 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-22 12:12 [PATCH bpf-next 0/7] bpf: Introduce kprobe_multi session attach Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 1/7] bpf: Add support for kprobe multi " Jiri Olsa
2024-04-24  0:26   ` Andrii Nakryiko
2024-04-24 11:46     ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 2/7] bpf: Add support for kprobe multi session context Jiri Olsa
2024-04-24  0:26   ` Andrii Nakryiko
2024-04-24 11:45     ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 3/7] bpf: Add support for kprobe multi session cookie Jiri Olsa
2024-04-22 17:48   ` Alexei Starovoitov
2024-04-22 20:55     ` Jiri Olsa
2024-04-24  0:26   ` Andrii Nakryiko
2024-04-24 11:45     ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 4/7] libbpf: Add support for kprobe multi session attach Jiri Olsa
2024-04-24  0:26   ` Andrii Nakryiko
2024-04-24 11:45     ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 5/7] libbpf: Add kprobe session attach type name to attach_type_name Jiri Olsa
2024-04-24  0:27   ` Andrii Nakryiko
2024-04-24 11:44     ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 6/7] selftests/bpf: Add kprobe multi session test Jiri Olsa
2024-04-24  0:27   ` Andrii Nakryiko
2024-04-24 11:44     ` Jiri Olsa
2024-04-30  8:10       ` Jiri Olsa
2024-04-22 12:12 ` [PATCH bpf-next 7/7] selftests/bpf: Add kprobe multi wrapper cookie test Jiri Olsa
2024-04-24  0:27   ` Andrii Nakryiko
2024-04-24 11:44     ` Jiri Olsa
2024-04-24  0:27 ` [PATCH bpf-next 0/7] bpf: Introduce kprobe_multi session attach Andrii Nakryiko
2024-04-24  5:12   ` John Fastabend
2024-04-24 11:43     ` Jiri Olsa

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).