summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/libarena/include
diff options
context:
space:
mode:
authorEmil Tsalapatis <emil@etsalapatis.com>2026-04-26 15:03:35 -0400
committerAlexei Starovoitov <ast@kernel.org>2026-04-26 18:12:22 -0700
commitcfc00618b9dfc75cd507f1a4f0d83b4429627399 (patch)
tree080cd3bd0295f57c2b5577e485f9c79876ac5baf /tools/testing/selftests/bpf/libarena/include
parent9ab78691eb5fd0d3ad0a1994d4103223678eb78b (diff)
downloadlinux-next-cfc00618b9dfc75cd507f1a4f0d83b4429627399.tar.gz
linux-next-cfc00618b9dfc75cd507f1a4f0d83b4429627399.zip
selftests/bpf: Add ASAN support for libarena selftests
Expand the arena library selftest infrastructure to support address sanitization. Add the compiler flags necessary to compile the library under ASAN when supported. Signed-off-by: Emil Tsalapatis <emil@etsalapatis.com> Link: https://lore.kernel.org/r/20260426190338.4615-6-emil@etsalapatis.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/libarena/include')
-rw-r--r--tools/testing/selftests/bpf/libarena/include/libarena/userspace.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/libarena/include/libarena/userspace.h b/tools/testing/selftests/bpf/libarena/include/libarena/userspace.h
index 0438a751d5fd..88b68ac73cca 100644
--- a/tools/testing/selftests/bpf/libarena/include/libarena/userspace.h
+++ b/tools/testing/selftests/bpf/libarena/include/libarena/userspace.h
@@ -27,6 +27,11 @@ static inline bool libarena_is_test_prog(const char *name)
return strstr(name, "test_") == name;
}
+static inline bool libarena_is_asan_test_prog(const char *name)
+{
+ return strstr(name, "asan_test") == name;
+}
+
static inline int libarena_run_prog_args(int prog_fd, void *args, size_t argsize)
{
LIBBPF_OPTS(bpf_test_run_opts, opts);
@@ -97,3 +102,31 @@ static inline int libarena_get_globals_pages(int arena_get_globals_fd,
free(vec);
return 0;
}
+
+static inline int libarena_asan_init(int arena_asan_init_fd,
+ int asan_init_fd,
+ size_t arena_all_pages)
+{
+ LIBBPF_OPTS(bpf_test_run_opts, opts);
+ struct asan_init_args args;
+ u64 globals_pages;
+ int ret;
+
+ ret = libarena_get_globals_pages(arena_asan_init_fd,
+ arena_all_pages, &globals_pages);
+ if (ret)
+ return ret;
+
+ args = (struct asan_init_args){
+ .arena_all_pages = arena_all_pages,
+ .arena_globals_pages = globals_pages,
+ };
+
+ opts.ctx_in = &args;
+ opts.ctx_size_in = sizeof(args);
+
+ ret = bpf_prog_test_run_opts(asan_init_fd, &opts);
+ if (ret)
+ return ret;
+ return opts.retval;
+}