linux/arch
Daniel Borkmann b3ca20cba4 bpf, x64: increase number of passes
commit 6007b080d2 upstream.

In Cilium some of the main programs we run today are hitting 9 passes
on x64's JIT compiler, and we've had cases already where we surpassed
the limit where the JIT then punts the program to the interpreter
instead, leading to insertion failures due to CONFIG_BPF_JIT_ALWAYS_ON
or insertion failures due to the prog array owner being JITed but the
program to insert not (both must have the same JITed/non-JITed property).

One concrete case the program image shrunk from 12,767 bytes down to
10,288 bytes where the image converged after 16 steps. I've measured
that this took 340us in the JIT until it converges on my i7-6600U. Thus,
increase the original limit we had from day one where the JIT covered
cBPF only back then before we run into the case (as similar with the
complexity limit) where we trip over this and hit program rejections.
Also add a cond_resched() into the compilation loop, the JIT process
runs without any locks and may sleep anyway.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-28 18:40:17 +02:00
..
alpha vgacon: Set VGA struct resource types 2018-03-24 10:58:48 +01:00
arc ARC: uaccess: dont use "l" gcc inline asm constraint modifier 2018-01-10 09:27:11 +01:00
arm ARM: DRA7: clockdomain: Change the CLKTRCTRL of CM_PCIE_CLKSTCTRL to SW_WKUP 2018-03-24 10:58:45 +01:00
arm64 mm/vmalloc: add interfaces to free unmapped page table 2018-03-28 18:40:14 +02:00
avr32 avr32: off by one in at32_init_pio() 2016-10-07 15:23:45 +02:00
blackfin pinctrl: adi2: Fix Kconfig build problem 2017-12-20 10:05:00 +01:00
c6x c6x/ptrace: Remove useless PTRACE_SETREGSET implementation 2017-03-31 09:49:53 +02:00
cris cris: Only build flash rescue image if CONFIG_ETRAX_AXISFLASHMAP is selected 2017-01-12 11:22:48 +01:00
frv mm: larger stack guard gap, between vmas 2017-06-26 07:13:11 +02:00
h8300 h8300/ptrace: Fix incorrect register transfer count 2017-03-31 09:49:53 +02:00
hexagon hexagon: fix strncpy_from_user() error return 2016-09-24 10:07:44 +02:00
ia64 ia64: fix module loading for gcc-5.4 2018-03-24 10:58:45 +01:00
m32r m32r: fix __get_user() 2016-09-24 10:07:43 +02:00
m68k m68k: Fix ndelay() macro 2016-12-15 08:49:23 -08:00
metag metag/uaccess: Check access_ok in strncpy_from_user 2017-05-25 14:30:16 +02:00
microblaze microblaze: fix copy_from_user() 2016-09-24 10:07:43 +02:00
mips MIPS: ralink: Remove ralink_halt() 2018-03-28 18:40:12 +02:00
mn10300 mn10300/misalignment: Use SIGSEGV SEGV_MAPERR to report a failed user copy 2018-02-16 20:09:47 +01:00
nios2 nios2: reserve boot memory for device tree 2017-04-12 12:38:34 +02:00
openrisc signal/openrisc: Fix do_unaligned_access to send the proper signal 2018-02-16 20:09:46 +01:00
parisc parisc: Fix alignment of pa_tlb_lock in assembly on 32-bit SMP kernel 2018-01-10 09:27:12 +01:00
powerpc KVM: PPC: Book3S PR: Exit KVM on failed mapping 2018-03-24 10:58:41 +01:00
s390 s390: fix handling of -1 in set{,fs}[gu]id16 syscalls 2018-02-22 15:44:58 +01:00
score score: fix copy_from_user() and friends 2016-09-24 10:07:44 +02:00
sh SolutionEngine771x: fix Ether platform data 2018-03-03 10:19:45 +01:00
sparc sparc64/mm: set fields in deferred pages 2017-12-16 10:33:55 +01:00
tile mm: larger stack guard gap, between vmas 2017-06-26 07:13:11 +02:00
um um: link vmlinux with -no-pie 2018-01-31 12:06:12 +01:00
unicore32 pwm: Changes for v4.4-rc1 2015-11-11 09:16:10 -08:00
x86 bpf, x64: increase number of passes 2018-03-28 18:40:17 +02:00
xtensa xtensa: fix futex_atomic_cmpxchg_inatomic 2018-02-16 20:09:47 +01:00
.gitignore
Kconfig