selftests/bpf: Add a test for kprobe multi with unique_match

Add a kprobe multi subtest to test kprobe multi unique_match option.

Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20250109174028.3368967-1-yonghong.song@linux.dev
This commit is contained in:
Yonghong Song 2025-01-09 09:40:28 -08:00 committed by Andrii Nakryiko
parent e2b0bda62d
commit a43796b520

View File

@ -397,6 +397,31 @@ static void test_session_cookie_skel_api(void)
kprobe_multi_session_cookie__destroy(skel);
}
static void test_unique_match(void)
{
LIBBPF_OPTS(bpf_kprobe_multi_opts, opts);
struct kprobe_multi *skel = NULL;
struct bpf_link *link = NULL;
skel = kprobe_multi__open_and_load();
if (!ASSERT_OK_PTR(skel, "kprobe_multi__open_and_load"))
return;
opts.unique_match = true;
skel->bss->pid = getpid();
link = bpf_program__attach_kprobe_multi_opts(skel->progs.test_kprobe_manual,
"bpf_fentry_test*", &opts);
if (!ASSERT_ERR_PTR(link, "bpf_program__attach_kprobe_multi_opts"))
bpf_link__destroy(link);
link = bpf_program__attach_kprobe_multi_opts(skel->progs.test_kprobe_manual,
"bpf_fentry_test8*", &opts);
if (ASSERT_OK_PTR(link, "bpf_program__attach_kprobe_multi_opts"))
bpf_link__destroy(link);
kprobe_multi__destroy(skel);
}
static size_t symbol_hash(long key, void *ctx __maybe_unused)
{
return str_hash((const char *) key);
@ -765,5 +790,7 @@ void test_kprobe_multi_test(void)
test_session_skel_api();
if (test__start_subtest("session_cookie"))
test_session_cookie_skel_api();
if (test__start_subtest("unique_match"))
test_unique_match();
RUN_TESTS(kprobe_multi_verifier);
}