[PATCH 5.10 108/167] s390/boot: fix use of expolines in the DMA code

From: Greg Kroah-Hartman
Date: Mon Jul 26 2021 - 12:26:19 EST

From: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx>

commit 463f36c76fa4ec015c640ff63ccf52e7527abee0 upstream.

The DMA code section of the decompressor must be compiled with expolines
if Spectre V2 mitigation has been enabled for the decompressed kernel.
This is required because although the decompressor's image contains
the DMA code section, it is handed over to the decompressed kernel for use.

Because the DMA code is already slow w/o expolines, use expolines always
regardless whether the decompressed kernel is using them or not. This
simplifies the DMA code by dropping the conditional compilation of

Fixes: bf72630130c2 ("s390: use proper expoline sections for .dma code")
Cc: <stable@xxxxxxxxxxxxxxx> # 5.2
Signed-off-by: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx>
Reviewed-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
arch/s390/boot/text_dma.S | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)

--- a/arch/s390/boot/text_dma.S
+++ b/arch/s390/boot/text_dma.S
@@ -9,16 +9,6 @@
#include <asm/errno.h>
#include <asm/sigp.h>

- .pushsection .dma.text.__s390_indirect_jump_r14,"axG"
- larl %r1,0f
- ex 0,0(%r1)
- j .
-0: br %r14
- .popsection
.section .dma.text,"ax"
* Simplified version of expoline thunk. The normal thunks can not be used here,
@@ -27,11 +17,10 @@ __dma__s390_indirect_jump_r14:
* affects a few functions that are not performance-relevant.
.macro BR_EX_DMA_r14
- jg __dma__s390_indirect_jump_r14
- br %r14
+ larl %r1,0f
+ ex 0,0(%r1)
+ j .
+0: br %r14