Re: [PATCH bpf-next 2/2] selftests/bpf: Add testcases for callback with tailcall

From: Pu Lehui

Date: Mon Jul 13 2026 - 22:02:11 EST


Hi Eduard,

Thanks for reviewing.

On 2026/7/14 6:12, Eduard Zingerman wrote:
On Sat, 2026-07-11 at 10:47 +0000, Pu Lehui wrote:

[...]

diff --git a/tools/testing/selftests/bpf/prog_tests/tailcalls.c b/tools/testing/selftests/bpf/prog_tests/tailcalls.c
index a5a226d0104c..c66037162da5 100644
--- a/tools/testing/selftests/bpf/prog_tests/tailcalls.c
+++ b/tools/testing/selftests/bpf/prog_tests/tailcalls.c

[...]

 void test_tailcalls(void)
 {
  if (test__start_subtest("tailcall_1"))
@@ -1967,4 +1973,5 @@ void test_tailcalls(void)
  test_tailcall_cgrp_storage_no_storage_leaf();
  if (test__start_subtest("tailcall_cgrp_storage_no_storage_bridge"))
  test_tailcall_cgrp_storage_no_storage_bridge();
+ test_tailcall_callback();

Please use test__start_subtest().

I use `RUN_TESTS(tailcall_callback)` above, so it will parse subtest base on `__description(desc)` or test func_proto. Also, it will make sense to test only by `test_progs -a tailcalls/tailcall_bpf2bpf_callback`


But if use `test__start_subtest`, it will show double test items:

#480/37 tailcalls/tailcall_cgrp_storage_no_storage_bridge:OK
#480/38 tailcalls/test_tailcall_bpf2bpf_callback:OK <--
#480/39 tailcalls/tailcall_bpf2bpf_callback:OK <--
#480 tailcalls:OK
Summary: 1/39 PASSED, 0 SKIPPED, 0 FAILED


 }
diff --git a/tools/testing/selftests/bpf/progs/tailcall_callback.c b/tools/testing/selftests/bpf/progs/tailcall_callback.c
new file mode 100644
index 000000000000..504d8e7a6996
--- /dev/null
+++ b/tools/testing/selftests/bpf/progs/tailcall_callback.c

[...]

+/* callback involving 1 subprog with tail call is rejected */
+SEC("tc")
+__failure __msg("cannot tail call within callback")
+int tailcall_bpf2bpf_callback_1(struct __sk_buff *skb)
+{
+ clobber_regs_stack();
+
+ bpf_loop(1, callback_loop_2, &skb, 0);
+ return 0;
+}

I think having all three is a bit redundant,
let's settle on tailcall_bpf2bpf_callback_1?

make sense to me