Skip to content

Commit 97489e0

Browse files
author
Martin Schwidefsky
committed
s390/lib: use expoline for indirect branches
The return from the memmove, memset, memcpy, __memset16, __memset32 and __memset64 functions are done with "br %r14". These are indirect branches as well and need to use execute trampolines for CONFIG_EXPOLINE=y. Cc: [email protected] # 4.16 Fixes: f19fbd5 ("s390: introduce execute-trampolines for branches") Reviewed-by: Hendrik Brueckner <[email protected]> Signed-off-by: Martin Schwidefsky <[email protected]>
1 parent 467a3bf commit 97489e0

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

arch/s390/lib/mem.S

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
#include <linux/linkage.h>
99
#include <asm/export.h>
10+
#include <asm/nospec-insn.h>
11+
12+
GEN_BR_THUNK %r14
1013

1114
/*
1215
* void *memmove(void *dest, const void *src, size_t n)
@@ -33,14 +36,14 @@ ENTRY(memmove)
3336
.Lmemmove_forward_remainder:
3437
larl %r5,.Lmemmove_mvc
3538
ex %r4,0(%r5)
36-
br %r14
39+
BR_EX %r14
3740
.Lmemmove_reverse:
3841
ic %r0,0(%r4,%r3)
3942
stc %r0,0(%r4,%r1)
4043
brctg %r4,.Lmemmove_reverse
4144
ic %r0,0(%r4,%r3)
4245
stc %r0,0(%r4,%r1)
43-
br %r14
46+
BR_EX %r14
4447
.Lmemmove_mvc:
4548
mvc 0(1,%r1),0(%r3)
4649
EXPORT_SYMBOL(memmove)
@@ -77,7 +80,7 @@ ENTRY(memset)
7780
.Lmemset_clear_remainder:
7881
larl %r3,.Lmemset_xc
7982
ex %r4,0(%r3)
80-
br %r14
83+
BR_EX %r14
8184
.Lmemset_fill:
8285
cghi %r4,1
8386
lgr %r1,%r2
@@ -95,10 +98,10 @@ ENTRY(memset)
9598
stc %r3,0(%r1)
9699
larl %r5,.Lmemset_mvc
97100
ex %r4,0(%r5)
98-
br %r14
101+
BR_EX %r14
99102
.Lmemset_fill_exit:
100103
stc %r3,0(%r1)
101-
br %r14
104+
BR_EX %r14
102105
.Lmemset_xc:
103106
xc 0(1,%r1),0(%r1)
104107
.Lmemset_mvc:
@@ -121,7 +124,7 @@ ENTRY(memcpy)
121124
.Lmemcpy_remainder:
122125
larl %r5,.Lmemcpy_mvc
123126
ex %r4,0(%r5)
124-
br %r14
127+
BR_EX %r14
125128
.Lmemcpy_loop:
126129
mvc 0(256,%r1),0(%r3)
127130
la %r1,256(%r1)
@@ -159,10 +162,10 @@ ENTRY(__memset\bits)
159162
\insn %r3,0(%r1)
160163
larl %r5,.L__memset_mvc\bits
161164
ex %r4,0(%r5)
162-
br %r14
165+
BR_EX %r14
163166
.L__memset_exit\bits:
164167
\insn %r3,0(%r2)
165-
br %r14
168+
BR_EX %r14
166169
.L__memset_mvc\bits:
167170
mvc \bytes(1,%r1),0(%r1)
168171
.endm

0 commit comments

Comments
 (0)