Commit a43796b5 authored by Yonghong Song's avatar Yonghong Song Committed by Andrii Nakryiko
Browse files

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: default avatarYonghong Song <yonghong.song@linux.dev>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20250109174028.3368967-1-yonghong.song@linux.dev
parent e2b0bda6
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -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);
}