linux-trace-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/5] bpf: Allow skb dynptr for tp_btf
@ 2024-09-05  7:56 Philo Lu
  2024-09-05  7:56 ` [PATCH bpf-next v2 1/5] bpf: Support __nullable argument suffix " Philo Lu
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Philo Lu @ 2024-09-05  7:56 UTC (permalink / raw)
  To: bpf
  Cc: edumazet, rostedt, mhiramat, mathieu.desnoyers, martin.lau, ast,
	daniel, andrii, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, davem, kuba, pabeni, mykolal, shuah,
	mcoquelin.stm32, alexandre.torgue, thinker.li, juntong.deng,
	jrife, alan.maguire, davemarchevsky, dxu, vmalik,
	cupertino.miranda, mattbobrowski, xuanzhuo, netdev,
	linux-trace-kernel

This makes bpf_dynptr_from_skb usable for tp_btf, so that we can easily
parse skb in tracepoints. This has been discussed in [0], and Martin
suggested to use dynptr (instead of helpers like bpf_skb_load_bytes).

For safety, skb dynptr shouldn't be used in fentry/fexit. This is achieved
by add KF_TRUSTED_ARGS flag in bpf_dynptr_from_skb defination, because
pointers passed by tracepoint are trusted (PTR_TRUSTED) while those of
fentry/fexit are not.

Another problem raises that NULL pointers could be passed to tracepoint,
such as trace_tcp_send_reset, and we need to recognize them. This is done
by add a "__nullable" suffix in the func_proto of the tracepoint,
discussed in [1].

2 Test cases are added, one for "__nullable" suffix, and the other for
using skb dynptr in tp_btf.

changelog
v1 -> v2:
 - Add "__nullable" suffix support (Alexei Starovoitov)
 - Replace "struct __sk_buff*" with "void*" in test (Martin KaFai Lau)

[0]
https://lore.kernel.org/all/20240205121038.41344-1-lulie@linux.alibaba.com/T/
[1]
https://lore.kernel.org/all/20240430121805.104618-1-lulie@linux.alibaba.com/T/

Philo Lu (5):
  bpf: Support __nullable argument suffix for tp_btf
  selftests/bpf: Add test for __nullable suffix in tp_btf
  tcp: Use skb__nullable in trace_tcp_send_reset
  bpf: Allow bpf_dynptr_from_skb() for tp_btf
  selftests/bpf: Expand skb dynptr selftests for tp_btf

 include/trace/events/tcp.h                    | 12 +++----
 kernel/bpf/btf.c                              | 13 +++++++
 kernel/bpf/verifier.c                         | 36 +++++++++++++++++--
 net/core/filter.c                             |  3 +-
 .../bpf/bpf_testmod/bpf_testmod-events.h      |  6 ++++
 .../selftests/bpf/bpf_testmod/bpf_testmod.c   |  2 ++
 .../testing/selftests/bpf/prog_tests/dynptr.c | 36 +++++++++++++++++--
 .../selftests/bpf/prog_tests/module_attach.c  | 14 +++++++-
 .../testing/selftests/bpf/progs/dynptr_fail.c | 25 +++++++++++++
 .../selftests/bpf/progs/dynptr_success.c      | 23 ++++++++++++
 .../bpf/progs/test_module_attach_fail.c       | 16 +++++++++
 11 files changed, 173 insertions(+), 13 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/progs/test_module_attach_fail.c

--
2.32.0.3.g01195cf9f


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

end of thread, other threads:[~2024-09-07  3:26 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-05  7:56 [PATCH bpf-next v2 0/5] bpf: Allow skb dynptr for tp_btf Philo Lu
2024-09-05  7:56 ` [PATCH bpf-next v2 1/5] bpf: Support __nullable argument suffix " Philo Lu
2024-09-06 21:25   ` Andrii Nakryiko
2024-09-07  3:26     ` Philo Lu
2024-09-07  1:14   ` Andrii Nakryiko
2024-09-05  7:56 ` [PATCH bpf-next v2 2/5] selftests/bpf: Add test for __nullable suffix in tp_btf Philo Lu
2024-09-06 21:25   ` Andrii Nakryiko
2024-09-05  7:56 ` [PATCH bpf-next v2 3/5] tcp: Use skb__nullable in trace_tcp_send_reset Philo Lu
2024-09-06  0:26   ` Alexei Starovoitov
2024-09-06 22:23     ` Jakub Kicinski
2024-09-06 22:41       ` Alexei Starovoitov
2024-09-06 22:57         ` Jakub Kicinski
2024-09-06 23:22           ` Alexei Starovoitov
2024-09-07  0:17             ` Jakub Kicinski
2024-09-05  7:56 ` [PATCH bpf-next v2 4/5] bpf: Allow bpf_dynptr_from_skb() for tp_btf Philo Lu
2024-09-06  1:13   ` Martin KaFai Lau
2024-09-05  7:56 ` [PATCH bpf-next v2 5/5] selftests/bpf: Expand skb dynptr selftests " Philo Lu

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