The progs/stream.c BPF program now uses arena helpers, so it includes bpf_arena_common.h, which conflicts with the declarations generated in vmlinux.h. This leads to the following build errors with the recent LLVM: In file included from progs/stream.c:8: .../tools/testing/selftests/bpf/bpf_arena_common.h:47:15: error: conflicting types for 'bpf_arena_alloc_pages' 47 | void __arena* bpf_arena_alloc_pages(void *map, void __arena *addr, __u32 page_cnt, | ^ .../tools/testing/selftests/bpf/tools/include/vmlinux.h:229284:14: note: previous declaration is here 229284 | extern void *bpf_arena_alloc_pages(void *p__map, void *addr__ign, u32 page_cnt, int node_id, u64 flags) __weak __ksym; | ^ ... etc Fix this by analogy with the 6a8260147745 ("bpf: selftests: Do not use generated kfunc prototypes for arena progs") commit by adding the BPF_NO_KFUNC_PROTOTYPES. As the test uses other kfuncs, declare them specifically. Fixes: 86f2225065be ("selftests/bpf: Add tests for arena fault reporting") Signed-off-by: Anton Protopopov --- tools/testing/selftests/bpf/progs/stream.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/bpf/progs/stream.c b/tools/testing/selftests/bpf/progs/stream.c index 4a5bd852f10c..900da666d182 100644 --- a/tools/testing/selftests/bpf/progs/stream.c +++ b/tools/testing/selftests/bpf/progs/stream.c @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */ + +#define BPF_NO_KFUNC_PROTOTYPES #include #include #include @@ -7,6 +9,13 @@ #include "bpf_experimental.h" #include "bpf_arena_common.h" +/* + * Declare kfuncs here, as BPF_NO_KFUNC_PROTOTYPES is used + * to exclude improper arena kfuncs declarations + */ +extern int bpf_res_spin_lock(struct bpf_res_spin_lock *lock) __weak __ksym; +extern void bpf_res_spin_unlock(struct bpf_res_spin_lock *lock) __weak __ksym; + struct arr_elem { struct bpf_res_spin_lock lock; }; -- 2.34.1