bpf, arm64: Support struct arguments in the BPF trampoline
authorFlorent Revest <revest@chromium.org>
Thu, 11 May 2023 14:05:07 +0000 (16:05 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 15 May 2023 19:17:22 +0000 (21:17 +0200)
commit90564f1e3dd66052af29e2c29cba3dc98b6604d0
tree1c952f79198d21afeda507ad774cf76a4e647a40
parent04cb8453a91c7c22f60ddadb6cef0d19abb33bb5
bpf, arm64: Support struct arguments in the BPF trampoline

This extends the BPF trampoline JIT to support attachment to functions
that take small structures (up to 128bit) as argument. This is trivially
achieved by saving/restoring a number of "argument registers" rather
than a number of arguments.

The AAPCS64 section 6.8.2 describes the parameter passing ABI.
"Composite types" (like C structs) below 16 bytes (as enforced by the
BPF verifier) are provided as part of the 8 argument registers as
explained in the section C.12.

Signed-off-by: Florent Revest <revest@chromium.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Acked-by: Xu Kuohai <xukuohai@huawei.com>
Link: https://lore.kernel.org/bpf/20230511140507.514888-1-revest@chromium.org
arch/arm64/net/bpf_jit_comp.c
tools/testing/selftests/bpf/DENYLIST.aarch64