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. 2. Another fexit loaded with the same tail_call_reachable prog target. 3. Close the first fexit link. [ 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. 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 | 51 +++++++++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) -- 2.55.0

