Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33a9081e authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Greg Kroah-Hartman
Browse files

s390: fix br_r1_trampoline for machines without exrl



commit 26f843848bae973817b3587780ce6b7b0200d3e4 upstream.

For machines without the exrl instruction the BFP jit generates
code that uses an "br %r1" instruction located in the lowcore page.
Unfortunately there is a cut & paste error that puts an additional
"larl %r1,.+14" instruction in the code that clobbers the branch
target address in %r1. Remove the larl instruction.

Cc: <stable@vger.kernel.org> # v4.17+
Fixes: de5cb6eb51 ("s390: use expoline thunks in the BPF JIT")
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ba064e81
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -517,8 +517,6 @@ static void bpf_jit_epilogue(struct bpf_jit *jit)
			/* br %r1 */
			/* br %r1 */
			_EMIT2(0x07f1);
			_EMIT2(0x07f1);
		} else {
		} else {
			/* larl %r1,.+14 */
			EMIT6_PCREL_RILB(0xc0000000, REG_1, jit->prg + 14);
			/* ex 0,S390_lowcore.br_r1_tampoline */
			/* ex 0,S390_lowcore.br_r1_tampoline */
			EMIT4_DISP(0x44000000, REG_0, REG_0,
			EMIT4_DISP(0x44000000, REG_0, REG_0,
				   offsetof(struct lowcore, br_r1_trampoline));
				   offsetof(struct lowcore, br_r1_trampoline));