mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-10 06:34:17 +08:00
s390/bpf: Use brcl for jumping to exit_ip if necessary
"BPF_MAXINSNS: Maximum possible literals" test causes panic with
bpf_jit_harden = 2. The reason is that BPF_JMP | BPF_EXIT is always
emitted as brc, however, after removal of JITed image size
limitations, brcl might be required.
Fix by using brcl when necessary.
Fixes: 4e9b4a6883
("s390/bpf: Use relative long branches")
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200717165326.6786-4-iii@linux.ibm.com
This commit is contained in:
parent
7477d43be5
commit
5fa6974471
@ -1268,8 +1268,12 @@ static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp,
|
||||
last = (i == fp->len - 1) ? 1 : 0;
|
||||
if (last)
|
||||
break;
|
||||
/* j <exit> */
|
||||
EMIT4_PCREL(0xa7f40000, jit->exit_ip - jit->prg);
|
||||
if (!is_first_pass(jit) && can_use_rel(jit, jit->exit_ip))
|
||||
/* brc 0xf, <exit> */
|
||||
EMIT4_PCREL_RIC(0xa7040000, 0xf, jit->exit_ip);
|
||||
else
|
||||
/* brcl 0xf, <exit> */
|
||||
EMIT6_PCREL_RILC(0xc0040000, 0xf, jit->exit_ip);
|
||||
break;
|
||||
/*
|
||||
* Branch relative (number of skipped instructions) to offset on
|
||||
|
Loading…
Reference in New Issue
Block a user