[PATCH bpf-next v2 00/10] libbpf: Fix accessing syscall arguments

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



libbpf now has macros to access syscall arguments in an
architecture-agnostic manner, but unfortunately they have a number of
issues on non-Intel arches, that this series aims to fix.

v1: https://lore.kernel.org/bpf/20220201234200.1836443-1-iii@xxxxxxxxxxxxx/
v1 -> v2:
* Put orig_gpr2 in place of args[1] on s390 (Vasily).
* Fix arm64, powerpc and riscv (Heiko).

The arm64 fix is similar to the s390 one.

powerpc and riscv are different in that they unpack arguments to
registers before invoking syscall handlers - libbpf needs to know about
this difference, so I've decided to introduce PT_REGS_SYSCALL macro for
this (see bpf_syscall_macro test for usage example).

Tested in QEMU.

@Catalin, @Michael, @Paul: could you please review the arm64, powerpc
and riscv parts?

Ilya Leoshkevich (10):
  arm64/bpf: Add orig_x0 to user_pt_regs
  s390/bpf: Add orig_gpr2 to user_pt_regs
  selftests/bpf: Fix an endianness issue in bpf_syscall_macro test
  libbpf: Add __PT_PARM1_REG_SYSCALL macro
  libbpf: Add PT_REGS_SYSCALL macro
  selftests/bpf: Use PT_REGS_SYSCALL in bpf_syscall_macro
  libbpf: Fix accessing the first syscall argument on arm64
  libbpf: Fix accessing syscall arguments on powerpc
  libbpf: Fix accessing syscall arguments on riscv
  libbpf: Fix accessing the first syscall argument on s390

 arch/arm64/include/asm/ptrace.h               |  2 +-
 arch/arm64/include/uapi/asm/ptrace.h          |  1 +
 arch/s390/include/asm/ptrace.h                |  3 +--
 arch/s390/include/uapi/asm/ptrace.h           |  2 +-
 tools/lib/bpf/bpf_tracing.h                   | 23 ++++++++++++++++++-
 .../selftests/bpf/progs/bpf_syscall_macro.c   |  7 ++++--
 6 files changed, 31 insertions(+), 7 deletions(-)

-- 
2.34.1




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux