On Wed, Jul 09, 2025 at 10:36:55AM +0200, Alexis Lothoré (eBPF Foundation)
wrote:
> While introducing support for 9+ arguments for tracing programs on
> ARM64, commit 9014cf56f13d ("bpf, arm64: Support up to 12 function
> arguments") has also introduced a constraint preventing BPF trampolines
> from being generated if the target function consumes a struct argument
> passed on stack, because of uncertainties around the exact struct
> location: if the struct has been marked as packed or with a custom
> alignment, this info is not reflected in BTF data, and so generated
> tracing trampolines could read the target function arguments at wrong
> offsets.
>
> This issue is not specific to ARM64: there has been an attempt (see [1])
> to bring the same constraint to other architectures JIT compilers. But
> discussions following this attempt led to the move of this constraint
> out of the kernel (see [2]): instead of preventing the kernel from
> generating trampolines for those functions consuming structs on stack,
> it is simpler to just make sure that those functions with uncertain
> struct arguments location are not encoded in BTF information, and so
> that one can not even attempt to attach a tracing program to such
> function. The task is then deferred to pahole (see [3]).
>
> Now that the constraint is handled by pahole, remove it from the arm64
> JIT compiler to keep it simple.
>
> [1]
> https://lore.kernel.org/bpf/20250613-deny_trampoline_structs_on_stack-v1-0-5be921176...@bootlin.com/
> [2]
> https://lore.kernel.org/bpf/caadnvq+sj9xhscn9pdmtzjva7eif21noauh3y1k6x5bwcl-...@mail.gmail.com/
> [3]
> https://lore.kernel.org/bpf/[email protected]/
>
> Signed-off-by: Alexis Lothoré (eBPF Foundation) <[email protected]>
> ---
> arch/arm64/net/bpf_jit_comp.c | 5 -----
> 1 file changed, 5 deletions(-)
This is a question born more out of ignorance that insight, but how do
we ensure that the version of pahole being used is sufficiently
up-to-date that the in-kernel check is not required?
Will