• Ilya Leoshkevich's avatar
    selftests/bpf: make PT_REGS_* work in userspace · 7cd04535
    Ilya Leoshkevich authored
    Right now, on certain architectures, these macros are usable only with
    kernel headers. This patch makes it possible to use them with userspace
    headers and, as a consequence, not only in BPF samples, but also in BPF
    selftests.
    
    On s390, provide the forward declaration of struct pt_regs and cast it
    to user_pt_regs in PT_REGS_* macros. This is necessary, because instead
    of the full struct pt_regs, s390 exposes only its first member
    user_pt_regs to userspace, and bpf_helpers.h is used with both userspace
    (in selftests) and kernel (in samples) headers. It was added in commit
    466698e6 ("s390/bpf: correct broken uapi for
    BPF_PROG_TYPE_PERF_EVENT program type").
    
    Ditto on arm64.
    
    On x86, provide userspace versions of PT_REGS_* macros. Unlike s390 and
    arm64, x86 provides struct pt_regs to both userspace and kernel, however,
    with different member names.
    Signed-off-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Reviewed-by: default avatarStanislav Fomichev <sdf@google.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    7cd04535
bpf_helpers.h 20 KB