selftests/bpf: Add kprobe multi write ctx attach test

Adding test to check we can't attach kprobe multi program
that writes to the context.

It's x86_64 specific test.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20250916215301.664963-7-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Jiri Olsa 2025-09-16 23:53:01 +02:00 committed by Alexei Starovoitov
parent 1b881ee294
commit 3d237467a4
2 changed files with 34 additions and 0 deletions

View File

@ -7,6 +7,7 @@
#include "kprobe_multi_session.skel.h"
#include "kprobe_multi_session_cookie.skel.h"
#include "kprobe_multi_verifier.skel.h"
#include "kprobe_write_ctx.skel.h"
#include "bpf/libbpf_internal.h"
#include "bpf/hashmap.h"
@ -539,6 +540,30 @@ static void test_attach_override(void)
kprobe_multi_override__destroy(skel);
}
#ifdef __x86_64__
static void test_attach_write_ctx(void)
{
struct kprobe_write_ctx *skel = NULL;
struct bpf_link *link = NULL;
skel = kprobe_write_ctx__open_and_load();
if (!ASSERT_OK_PTR(skel, "kprobe_write_ctx__open_and_load"))
return;
link = bpf_program__attach_kprobe_opts(skel->progs.kprobe_multi_write_ctx,
"bpf_fentry_test1", NULL);
if (!ASSERT_ERR_PTR(link, "bpf_program__attach_kprobe_opts"))
bpf_link__destroy(link);
kprobe_write_ctx__destroy(skel);
}
#else
static void test_attach_write_ctx(void)
{
test__skip();
}
#endif
void serial_test_kprobe_multi_bench_attach(void)
{
if (test__start_subtest("kernel"))
@ -578,5 +603,7 @@ void test_kprobe_multi_test(void)
test_session_cookie_skel_api();
if (test__start_subtest("unique_match"))
test_unique_match();
if (test__start_subtest("attach_write_ctx"))
test_attach_write_ctx();
RUN_TESTS(kprobe_multi_verifier);
}

View File

@ -12,4 +12,11 @@ int kprobe_write_ctx(struct pt_regs *ctx)
ctx->ax = 0;
return 0;
}
SEC("kprobe.multi")
int kprobe_multi_write_ctx(struct pt_regs *ctx)
{
ctx->ax = 0;
return 0;
}
#endif