Skip to content

Commit 9e9792d

Browse files
Martin Schwidefskygregkh
authored andcommitted
s390/lib: use expoline for all bcr instructions
commit 5eda25b upstream. The memove, memset, memcpy, __memset16, __memset32 and __memset64 function have an additional indirect return branch in form of a "bzr" instruction. These need to use expolines as well. Cc: <stable@vger.kernel.org> # v4.17+ Fixes: 97489e0 ("s390/lib: use expoline for indirect branches") Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent c0b8099 commit 9e9792d

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

arch/s390/lib/mem.S

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*/
2828
ENTRY(memset)
2929
ltgr %r4,%r4
30-
bzr %r14
30+
jz .Lmemset_exit
3131
ltgr %r3,%r3
3232
jnz .Lmemset_fill
3333
aghi %r4,-1
@@ -42,12 +42,13 @@ ENTRY(memset)
4242
.Lmemset_clear_rest:
4343
larl %r3,.Lmemset_xc
4444
ex %r4,0(%r3)
45+
.Lmemset_exit:
4546
BR_EX %r14
4647
.Lmemset_fill:
4748
stc %r3,0(%r2)
4849
cghi %r4,1
4950
lgr %r1,%r2
50-
ber %r14
51+
je .Lmemset_fill_exit
5152
aghi %r4,-2
5253
srlg %r3,%r4,8
5354
ltgr %r3,%r3
@@ -59,6 +60,7 @@ ENTRY(memset)
5960
.Lmemset_fill_rest:
6061
larl %r3,.Lmemset_mvc
6162
ex %r4,0(%r3)
63+
.Lmemset_fill_exit:
6264
BR_EX %r14
6365
.Lmemset_xc:
6466
xc 0(1,%r1),0(%r1)
@@ -73,7 +75,7 @@ EXPORT_SYMBOL(memset)
7375
*/
7476
ENTRY(memcpy)
7577
ltgr %r4,%r4
76-
bzr %r14
78+
jz .Lmemcpy_exit
7779
aghi %r4,-1
7880
srlg %r5,%r4,8
7981
ltgr %r5,%r5
@@ -82,6 +84,7 @@ ENTRY(memcpy)
8284
.Lmemcpy_rest:
8385
larl %r5,.Lmemcpy_mvc
8486
ex %r4,0(%r5)
87+
.Lmemcpy_exit:
8588
BR_EX %r14
8689
.Lmemcpy_loop:
8790
mvc 0(256,%r1),0(%r3)

0 commit comments

Comments
 (0)