]> www.infradead.org Git - users/jedix/linux-maple.git/commit
bpf: define KF_ARENA_* flags for bpf_arena kfuncs
authorIhor Solodrai <ihor.solodrai@linux.dev>
Thu, 6 Feb 2025 00:31:48 +0000 (16:31 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Sat, 8 Feb 2025 02:22:52 +0000 (18:22 -0800)
commitea145d530a2db80ff41622af16757f909a435dc9
treecf5d901bf0afebca4eb79e7bfa5ad09c07cc8b30
parent003be25ab99cf9d1f57952737d1ea05e866fda43
bpf: define KF_ARENA_* flags for bpf_arena kfuncs

bpf_arena_alloc_pages() and bpf_arena_free_pages() work with the
bpf_arena pointers [1], which is indicated by the __arena macro in the
kernel source code:

    #define __arena __attribute__((address_space(1)))

However currently this information is absent from the debug data in
the vmlinux binary. As a consequence, bpf_arena_* kfuncs declarations
in vmlinux.h (produced by bpftool) do not match prototypes expected by
the BPF programs attempting to use these functions.

Introduce a set of kfunc flags to mark relevant types as bpf_arena
pointers. The flags then can be detected by pahole when generating BTF
from vmlinux's DWARF, allowing it to emit corresponding BTF type tags
for the marked kfuncs.

With recently proposed BTF extension [2], these type tags will be
processed by bpftool when dumping vmlinux.h, and corresponding
compiler attributes will be added to the declarations.

[1] https://lwn.net/Articles/961594/
[2] https://lore.kernel.org/bpf/20250130201239.1429648-1-ihor.solodrai@linux.dev/

Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Link: https://lore.kernel.org/r/20250206003148.2308659-1-ihor.solodrai@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/btf.h
kernel/bpf/arena.c