From 63be110a96aea4d0b5d5fe34cbd3ecf0819e14a3 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 19 Oct 2026 17:10:04 -0400 Subject: [PATCH 1/3] bpf: Drop unused entries from special_kfunc_list again Commit 6f033615ef8f ("bpf: Trim special_kfunc_list in verifier") dropped bpf_arena_reserve_pages, bpf_stream_vprintk and bpf_stream_print_stack from special_kfunc_list once nothing used them anymore, but commit ab7fff217fd1 ("bpf: Check helper and kfunc arguments in one path") brought all three back without adding any users. Besides being dead, the bpf_arena_reserve_pages entry can't be resolved on 32-bit and !MMU kernels, which don't build arena.o, and since commit 201a454df948 ("resolve_btfids: Fix the --fatal_warnings exit status") the resulting resolve_btfids warning fails the build with CONFIG_WERROR=y: WARN: resolve_btfids: unresolved symbol bpf_arena_reserve_pages Drop the three entries again. Fixes: ab7fff217fd1 ("bpf: Check helper and kfunc arguments in one path") Signed-off-by: Sasha Levin Signed-off-by: Alexei Starovoitov Link: https://patch.msgid.link/20261019211006.2574350-2-sashal@kernel.org --- kernel/bpf/verifier.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 015dc1bccebe..d49b7ea2c002 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -13612,10 +13612,7 @@ enum special_kfunc_type { KF_bpf_call_rcu_tasks_trace, KF_bpf_arena_alloc_pages, KF_bpf_arena_free_pages, - KF_bpf_arena_reserve_pages, KF_bpf_session_is_return, - KF_bpf_stream_vprintk, - KF_bpf_stream_print_stack, }; BTF_ID_LIST(special_kfunc_list) @@ -13707,14 +13704,11 @@ BTF_ID(func, bpf_call_rcu) BTF_ID(func, bpf_call_rcu_tasks_trace) BTF_ID(func, bpf_arena_alloc_pages) BTF_ID(func, bpf_arena_free_pages) -BTF_ID(func, bpf_arena_reserve_pages) #ifdef CONFIG_BPF_EVENTS BTF_ID(func, bpf_session_is_return) #else BTF_ID_UNUSED #endif -BTF_ID(func, bpf_stream_vprintk) -BTF_ID(func, bpf_stream_print_stack) static bool is_bpf_cast_to_kern_ctx_kfunc(const struct bpf_call_arg_meta *meta) { From ced6a0993e2f89158451a1b8651169ac20725aee Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 19 Oct 2026 17:10:05 -0400 Subject: [PATCH 2/3] bpf: Don't reference arena kfuncs when arena isn't built kernel/bpf/Makefile builds arena.o only for CONFIG_MMU && CONFIG_64BIT, but special_kfunc_list references bpf_arena_alloc_pages() and bpf_arena_free_pages() unconditionally, so on 32-bit and !MMU kernels resolve_btfids can't resolve them: WARN: resolve_btfids: unresolved symbol bpf_arena_free_pages WARN: resolve_btfids: unresolved symbol bpf_arena_alloc_pages Since commit 201a454df948 ("resolve_btfids: Fix the --fatal_warnings exit status") these warnings fail the build with CONFIG_WERROR=y, which breaks i386 builds with CONFIG_DEBUG_INFO_BTF=y: Failed to generate BTF for vmlinux Try to disable CONFIG_DEBUG_INFO_BTF Only reference them under the condition arena.o is built with, and use BTF_ID_UNUSED otherwise to keep the list in sync with enum special_kfunc_type. An unresolved ID is zero, like BTF_ID_UNUSED, so the contents of the list don't change. Fixes: b8467290edab ("bpf: arena: make arena kfuncs any context safe") Signed-off-by: Sasha Levin Signed-off-by: Alexei Starovoitov Link: https://patch.msgid.link/20261019211006.2574350-3-sashal@kernel.org --- kernel/bpf/verifier.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index d49b7ea2c002..264da570a0a5 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -13702,8 +13702,13 @@ BTF_ID(func, bpf_task_work_schedule_signal) BTF_ID(func, bpf_task_work_schedule_resume) BTF_ID(func, bpf_call_rcu) BTF_ID(func, bpf_call_rcu_tasks_trace) +#if defined(CONFIG_MMU) && defined(CONFIG_64BIT) BTF_ID(func, bpf_arena_alloc_pages) BTF_ID(func, bpf_arena_free_pages) +#else +BTF_ID_UNUSED +BTF_ID_UNUSED +#endif #ifdef CONFIG_BPF_EVENTS BTF_ID(func, bpf_session_is_return) #else From a81bd9262cde4b002b95e652453ce5b815c79a62 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Mon, 19 Oct 2026 17:10:06 -0400 Subject: [PATCH 3/3] bpf: Fix ksock build with BPF_LSM=y and SECURITY_NETWORK=n bpf_ksock.c references bpf_lsm_socket_sendmsg() whenever CONFIG_BPF_LSM=y, but the socket LSM hooks, and with them the BPF LSM socket_sendmsg hook, only exist with CONFIG_SECURITY_NETWORK=y. Without it resolve_btfids warns: WARN: resolve_btfids: unresolved symbol bpf_lsm_socket_sendmsg and since commit 201a454df948 ("resolve_btfids: Fix the --fatal_warnings exit status") that fails the build with CONFIG_WERROR=y. Only reference the hook with CONFIG_SECURITY_NETWORK=y, and use BTF_ID_UNUSED otherwise. The ID stays zero, as it was when unresolved, so bpf_ksock_kfunc_filter() keeps allowing LSM programs: none can be attached to socket_sendmsg without CONFIG_SECURITY_NETWORK. Fixes: 7ae4eb14c5f9 ("bpf: Add ksock kfuncs") Signed-off-by: Sasha Levin Signed-off-by: Alexei Starovoitov Acked-by: Mahe Tardy Link: https://patch.msgid.link/20261019211006.2574350-4-sashal@kernel.org --- net/core/bpf_ksock.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/net/core/bpf_ksock.c b/net/core/bpf_ksock.c index 7bf796193ab6..48a2e2327ace 100644 --- a/net/core/bpf_ksock.c +++ b/net/core/bpf_ksock.c @@ -258,7 +258,12 @@ BTF_ID_FLAGS(func, bpf_ksock_send, KF_SLEEPABLE) BTF_KFUNCS_END(ksock_kfunc_btf_ids) #ifdef CONFIG_BPF_LSM -BTF_ID_LIST_SINGLE(bpf_lsm_socket_sendmsg_id, func, bpf_lsm_socket_sendmsg) +BTF_ID_LIST(bpf_lsm_socket_sendmsg_id) +#ifdef CONFIG_SECURITY_NETWORK +BTF_ID(func, bpf_lsm_socket_sendmsg) +#else +BTF_ID_UNUSED +#endif #endif static int bpf_ksock_kfunc_filter(const struct bpf_prog *prog, u32 kfunc_id)