linux_dsm_epyc7002/arch
Daniel Borkmann b9c1e60e7b bpf, ppc64: fix unexpected r0=0 exit path inside bpf_xadd
None of the JITs is allowed to implement exit paths from the BPF
insn mappings other than BPF_JMP | BPF_EXIT. In the BPF core code
we have a couple of rewrites in eBPF (e.g. LD_ABS / LD_IND) and
in eBPF to cBPF translation to retain old existing behavior where
exceptions may occur; they are also tightly controlled by the
verifier where it disallows some of the features such as BPF to
BPF calls when legacy LD_ABS / LD_IND ops are present in the BPF
program. During recent review of all BPF_XADD JIT implementations
I noticed that the ppc64 one is buggy in that it contains two
jumps to exit paths. This is problematic as this can bypass verifier
expectations e.g. pointed out in commit f6b1b3bf0d ("bpf: fix
subprog verifier bypass by div/mod by 0 exception"). The first
exit path is obsoleted by the fix in ca36960211 ("bpf: allow xadd
only on aligned memory") anyway, and for the second one we need to
do a fetch, add and store loop if the reservation from lwarx/ldarx
was lost in the meantime.

Fixes: 156d0e290e ("powerpc/ebpf/jit: Implement JIT compiler for extended BPF")
Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Reviewed-by: Sandipan Das <sandipan@linux.vnet.ibm.com>
Tested-by: Sandipan Das <sandipan@linux.vnet.ibm.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2018-07-19 16:08:06 -07:00
..
alpha
arc
arm ARM: SoC fixes for 4.18-rc 2018-07-15 09:49:21 -07:00
arm64 arm64: neon: Fix function may_use_simd() return error status 2018-07-11 17:02:02 +01:00
c6x
h8300
hexagon
ia64
m68k m68k: fix "bad page state" oops on ColdFire boot 2018-07-02 10:05:13 +10:00
microblaze Microblaze patches for 4.18-rc3 2018-06-27 09:49:30 -07:00
mips MIPS: Fix ioremap() RAM check 2018-07-05 14:43:21 -07:00
nds32
nios2
openrisc openrisc: entry: Fix delay slot exception detection 2018-07-01 16:48:24 +09:00
parisc parisc: Build kernel without -ffunction-sections 2018-06-29 17:27:20 +02:00
powerpc bpf, ppc64: fix unexpected r0=0 exit path inside bpf_xadd 2018-07-19 16:08:06 -07:00
riscv RISC-V: Fix the rv32i kernel build 2018-07-04 14:12:53 -07:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2018-07-06 09:14:34 -07:00
sh
sparc
um Solve a series of broken links for files under Documentation: 2018-06-17 05:25:18 +09:00
unicore32
x86 Miscellaneous bugfixes, plus a small patchlet related to Spectre v2. 2018-07-18 11:08:44 -07:00
xtensa
.gitignore
Kconfig