linux_dsm_epyc7002/arch/s390
Ilya Leoshkevich d72714c1da s390/bpf: Fix multiple tail calls
In order to branch around tail calls (due to out-of-bounds index,
exceeding tail call count or missing tail call target), JIT uses
label[0] field, which contains the address of the instruction following
the tail call. When there are multiple tail calls, label[0] value comes
from handling of a previous tail call, which is incorrect.

Fix by getting rid of label array and resolving the label address
locally: for all 3 branches that jump to it, emit 0 offsets at the
beginning, and then backpatch them with the correct value.

Also, do not use the long jump infrastructure: the tail call sequence
is known to be short, so make all 3 jumps short.

Fixes: 6651ee070b ("s390/bpf: implement bpf_tail_call() helper")
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200909232141.3099367-1-iii@linux.ibm.com
2020-09-14 18:21:31 -07:00
..
appldata s390/appldata: use struct_size() helper 2020-06-29 16:32:34 +02:00
boot mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
configs s390: update defconfigs 2020-07-01 20:02:38 +02:00
crypto mm, treewide: rename kzfree() to kfree_sensitive() 2020-08-07 11:33:22 -07:00
hypfs fs_parse: fold fs_parameter_desc/fs_parameter_spec 2020-02-07 14:48:37 -05:00
include - Allow s390 debug feature to handle finally more than 256 CPU numbers, instead 2020-08-13 12:38:32 -07:00
kernel s390/ptrace: fix storage key handling 2020-08-17 13:17:14 +02:00
kvm mm/gup: remove task_struct pointer for all gup code 2020-08-12 10:58:04 -07:00
lib s390/test_unwind: fix possible memleak in test_unwind() 2020-08-11 18:16:16 +02:00
mm - Allow s390 debug feature to handle finally more than 256 CPU numbers, instead 2020-08-13 12:38:32 -07:00
net s390/bpf: Fix multiple tail calls 2020-09-14 18:21:31 -07:00
oprofile
pci s390/pci: fix PF/VF linking on hot plug 2020-08-17 13:17:34 +02:00
purgatory .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
scripts s390/build: use size command to perform empty .bss check 2019-08-08 14:36:53 +02:00
tools .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Kbuild s390/numa: move code to arch/s390/kernel 2020-08-11 18:16:55 +02:00
Kconfig s390/time: remove select CLOCKSOURCE_VALIDATE_LAST_CYCLE again 2020-08-11 18:16:48 +02:00
Kconfig.debug treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile kbuild: remove cc-option test of -ffreestanding 2020-07-07 11:13:10 +09:00