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

Commit 467a3bf2 authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

s390/crc32-vx: use expoline for indirect branches



The return from the crc32_le_vgfm_16/crc32c_le_vgfm_16 and the
crc32_be_vgfm_16 functions are done with "br %r14". These are indirect
branches as well and need to use execute trampolines for CONFIG_EXPOLINE=y.

Cc: stable@vger.kernel.org # 4.16
Fixes: f19fbd5e ("s390: introduce execute-trampolines for branches")
Reviewed-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 6dd85fbb
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
 */

#include <linux/linkage.h>
#include <asm/nospec-insn.h>
#include <asm/vx-insn.h>

/* Vector register range containing CRC-32 constants */
@@ -67,6 +68,8 @@

.previous

	GEN_BR_THUNK %r14

.text
/*
 * The CRC-32 function(s) use these calling conventions:
@@ -203,6 +206,6 @@ ENTRY(crc32_be_vgfm_16)

.Ldone:
	VLGVF	%r2,%v2,3
	br	%r14
	BR_EX	%r14

.previous
+3 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
 */

#include <linux/linkage.h>
#include <asm/nospec-insn.h>
#include <asm/vx-insn.h>

/* Vector register range containing CRC-32 constants */
@@ -76,6 +77,7 @@

.previous

	GEN_BR_THUNK %r14

.text

@@ -264,6 +266,6 @@ crc32_le_vgfm_generic:

.Ldone:
	VLGVF	%r2,%v2,2
	br	%r14
	BR_EX	%r14

.previous