bpf: Allow union argument in trampoline based programs
authorLeon Hwang <leon.hwang@linux.dev>
Fri, 19 Sep 2025 04:41:09 +0000 (12:41 +0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 23 Sep 2025 19:07:46 +0000 (12:07 -0700)
commitccb4f5d91ec43c05ba165ccfc7ed889eb9cdfd05
tree0c7b1d0fb83f232083059b08732b027d6aa49205
parent2383e45f1da7ac73683ac3494a205bc878a58cc9
bpf: Allow union argument in trampoline based programs

Currently, functions with 'union' arguments cannot be traced with
fentry/fexit:

bpftrace -e 'fentry:release_pages { exit(); }' -v

The function release_pages arg0 type UNION is unsupported.

The type of the 'release_pages' arg0 is defined as:

typedef union {
struct page **pages;
struct folio **folios;
struct encoded_page **encoded_pages;
} release_pages_arg __attribute__ ((__transparent_union__));

This patch relaxes the restriction by allowing function arguments of type
'union' to be traced in verifier.

Reviewed-by: Amery Hung <ameryhung@gmail.com>
Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
Link: https://lore.kernel.org/r/20250919044110.23729-2-leon.hwang@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/bpf.h
kernel/bpf/btf.c