History

bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type

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.

Hendrik Brueckner committed 8 years ago

Commit c895f6f1 parent 2391f0b32 files · +47 −5Browse files

Showing the changes to include/uapi/linux (1 of 32 files). Show all

Unified · Split

include/uapi/linux/bpf_perf_event.h+2−3
@@ -8,11 +8,10 @@ · 7 unmodified lines
88 #ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__
99 #define _UAPI__LINUX_BPF_PERF_EVENT_H__
1010
11−#include <linux/types.h>
12−#include <linux/ptrace.h>
11+#include <asm/bpf_perf_event.h>
1312
1413 struct bpf_perf_event_data {
15− struct pt_regs regs;
14+ bpf_user_pt_regs_t regs;
1615 __u64 sample_period;
1716 };
1817