s390/bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type
authorHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Mon, 4 Dec 2017 09:56:45 +0000 (10:56 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 5 Dec 2017 14:02:41 +0000 (15:02 +0100)
commit466698e654e8931945301ea999feb6bd4bfaf849
tree8cb41d1ca11de90b460984e8142e30a3903938a5
parentc895f6f703ad7dd2f99e751d9884b0aa5d0eea25
s390/bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type

To mitigate and correct the broken uapi for the BPF_PROG_TYPE_PERF_EVENT
program type, introduce a user_pt_regs structure (similar to arm64) that
exports parts from the beginnig of the pt_regs structure.

The export must start with the beginning of the pt_regs structure because
to correctly calculate BPF prologues for perf (regs_query_register_offset()).

For BPF_PROG_TYPE_PERF_EVENT program types, the BPF program is then passed
a user_pt_regs structure.

Note: Depending on future changes to the s390 pt_regs structure, consider
the user_pt_regs structure to be stable for a particular kernel version
only. (Of course, s390 tries to ensure keep it stable as much as possible.)

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Reviewed-and-tested-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
arch/s390/include/asm/perf_event.h
arch/s390/include/asm/ptrace.h
arch/s390/include/uapi/asm/bpf_perf_event.h [new file with mode: 0644]
arch/s390/include/uapi/asm/ptrace.h