The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/2] bpf: Fix WARNING in bpf_tracing_link_release
@ 2026-07-22 15:19 Leon Hwang
  2026-07-22 15:19 ` [PATCH bpf-next v2 1/2] " Leon Hwang
  2026-07-22 15:19 ` [PATCH bpf-next v2 2/2] selftests/bpf: Verify no warning when close fexit link Leon Hwang
  0 siblings, 2 replies; 3+ messages in thread
From: Leon Hwang @ 2026-07-22 15:19 UTC (permalink / raw)
  To: bpf
  Cc: Alexei Starovoitov, Daniel Borkmann, John Fastabend,
	Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi,
	Martin KaFai Lau, Song Liu, Yonghong Song, Jiri Olsa,
	Emil Tsalapatis, Shuah Khan, Jingguo Tan, Pu Lehui, Leon Hwang,
	Lin Ma, Maciej Fijalkowski, linux-kernel, linux-kselftest,
	kernel-patches-bot

The trampoline could be corrupted by the blindly
'tr->flags = BPF_TRAMP_F_TAIL_CALL_CTX' in verifier.

1. A fexit attached to a tail_call_reachable prog. 'tr->flags' became
   'BPF_TRAMP_F_CALL_ORIG | BPF_TRAMP_F_TAIL_CALL_CTX'. And, the
   trampoline would poke the target prog's nop insn using jmp insn instead
   of call insn.
2. Another fexit loaded with the same tail_call_reachable prog target.
   'tr->flags' became 'BPF_TRAMP_F_TAIL_CALL_CTX'.
3. Close the first fexit link. Due to no BPF_TRAMP_F_CALL_ORIG in
   'tr->flags', the trampoline will fail to restore the prog's nop insn
   using call insn.

[    3.410719] WARNING: kernel/bpf/syscall.c:3551 at bpf_tracing_link_release+0x53/0x60, CPU#1: test_progs/98
...
[    3.428793]  bpf_link_free+0x58/0x130
[    3.429293]  bpf_link_release+0x23/0x30

Fix the warning by updating 'tr->flags' with '|=' and lock.

Changes:
v1 -> v2:
* Update the patch #1 message with 'tr->flags' change. (per Jiri)
* Drop the 'link' and the last 'if' in patch #2. (per Jiri)
* v1: https://lore.kernel.org/bpf/20260721133036.49265-1-leon.hwang@linux.dev/

Leon Hwang (2):
  bpf: Fix WARNING in bpf_tracing_link_release
  selftests/bpf: Verify no warning when close fexit link

 include/linux/bpf.h                           |  2 +
 kernel/bpf/trampoline.c                       |  7 +++
 kernel/bpf/verifier.c                         |  2 +-
 .../selftests/bpf/prog_tests/tailcalls.c      | 48 +++++++++++++++++++
 4 files changed, 58 insertions(+), 1 deletion(-)

--
2.55.0

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

end of thread, other threads:[~2026-07-22 15:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-22 15:19 [PATCH bpf-next v2 0/2] bpf: Fix WARNING in bpf_tracing_link_release Leon Hwang
2026-07-22 15:19 ` [PATCH bpf-next v2 1/2] " Leon Hwang
2026-07-22 15:19 ` [PATCH bpf-next v2 2/2] selftests/bpf: Verify no warning when close fexit link Leon Hwang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox