libbpf: Fix accessing the first syscall argument on arm64
authorIlya Leoshkevich <iii@linux.ibm.com>
Wed, 9 Feb 2022 02:17:44 +0000 (03:17 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 9 Feb 2022 05:37:50 +0000 (21:37 -0800)
commitfbca4a2f649730b67488a8b36140ce4d2cf13c63
treebd85a4c47968388af6f52981ec4dd94e3e02e4ba
parent60d16c5ccb811c9817bb0a71644b9ba14115f68e
libbpf: Fix accessing the first syscall argument on arm64

On arm64, the first syscall argument should be accessed via orig_x0
(see arch/arm64/include/asm/syscall.h). Currently regs[0] is used
instead, leading to bpf_syscall_macro test failure.

orig_x0 cannot be added to struct user_pt_regs, since its layout is a
part of the ABI. Therefore provide access to it only through
PT_REGS_PARM1_CORE_SYSCALL() by using a struct pt_regs flavor.

Reported-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220209021745.2215452-10-iii@linux.ibm.com
tools/lib/bpf/bpf_tracing.h