The kprobe_multi subtests rely on bpf_testmod fentry ksyms.

When bpf_testmod isn't available, libbpf fails to resolve
bpf_testmod_fentry_test* and skeleton load fails with -ESRCH, causing
false failures.

Skip these subtests when env.has_testmod is false.

Signed-off-by: Sun Jian <[email protected]>
---
 tools/testing/selftests/bpf/prog_tests/bpf_cookie.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c 
b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
index 75f4dff7d042..50f5e11e6e65 100644
--- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
+++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c
@@ -105,6 +105,11 @@ static void kprobe_multi_link_api_subtest(void)
        unsigned long long addrs[8];
        __u64 cookies[8];
 
+       if (!env.has_testmod) {
+               test__skip();
+               return;
+       }
+
        if (!ASSERT_OK(load_kallsyms(), "load_kallsyms"))
                goto cleanup;
 
@@ -192,6 +197,11 @@ static void kprobe_multi_attach_api_subtest(void)
        };
        __u64 cookies[8];
 
+       if (!env.has_testmod) {
+               test__skip();
+               return;
+       }
+
        skel = kprobe_multi__open_and_load();
        if (!ASSERT_OK_PTR(skel, "fentry_raw_skel_load"))
                goto cleanup;
@@ -451,7 +461,7 @@ static void pe_subtest(struct test_bpf_cookie *skel)
        attr.type = PERF_TYPE_SOFTWARE;
        attr.config = PERF_COUNT_SW_CPU_CLOCK;
        attr.sample_period = 100000;
-       pfd = syscall(__NR_perf_event_open, &attr, -1, 0, -1, 
PERF_FLAG_FD_CLOEXEC);
+       pfd = syscall(__NR_perf_event_open, &attr, 0, -1, -1, 
PERF_FLAG_FD_CLOEXEC);
        if (!ASSERT_GE(pfd, 0, "perf_fd"))
                goto cleanup;
 
-- 
2.43.0


Reply via email to