Commit 0515e5999a466dfe ("bpf: introduce BPF_PROG_TYPE_PERF_EVENT program type") introduced the bpf_perf_event_data structure which exports the pt_regs structure. This is OK for multiple architectures but fail for s390 and arm64 which do not export pt_regs. Programs using them, for example, the bpf selftest fail to compile on these architectures. For s390, exporting the pt_regs is not an option because s390 wants to allow changes to it. For arm64, there is a user_pt_regs structure that covers parts of the pt_regs structure for use by user space. To solve the broken uapi for s390 and arm64, introduce an abstract type for pt_regs and add an asm/bpf_perf_event.h file that concretes the type. An asm-generic header file covers the architectures that export pt_regs today. The arch-specific enablement for s390 and arm64 follows in separate commits.
Showing the changes to include/uapi/linux (1 of 32 files). Show all
Unified · Split
| @@ -8,11 +8,10 @@ · 7 unmodified lines | ||
| 8 | 8 | #ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__ |
| 9 | 9 | #define _UAPI__LINUX_BPF_PERF_EVENT_H__ |
| 10 | 10 | |
| 11 | −#include <linux/types.h> | |
| 12 | −#include <linux/ptrace.h> | |
| 11 | +#include <asm/bpf_perf_event.h> | |
| 13 | 12 | |
| 14 | 13 | struct bpf_perf_event_data { |
| 15 | − struct pt_regs regs; | |
| 14 | + bpf_user_pt_regs_t regs; | |
| 16 | 15 | __u64 sample_period; |
| 17 | 16 | }; |
| 18 | 17 | |