4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Martin Schwidefsky <schwidef...@de.ibm.com>

commit 5eda25b10297684c1f46a14199ec00210f3c346e 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: <sta...@vger.kernel.org> # v4.17+
Fixes: 97489e0663 ("s390/lib: use expoline for indirect branches")
Reviewed-by: Heiko Carstens <heiko.carst...@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidef...@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>


---
 arch/s390/lib/mem.S |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

--- a/arch/s390/lib/mem.S
+++ b/arch/s390/lib/mem.S
@@ -26,7 +26,7 @@
  */
 ENTRY(memset)
        ltgr    %r4,%r4
-       bzr     %r14
+       jz      .Lmemset_exit
        ltgr    %r3,%r3
        jnz     .Lmemset_fill
        aghi    %r4,-1
@@ -41,12 +41,13 @@ ENTRY(memset)
 .Lmemset_clear_rest:
        larl    %r3,.Lmemset_xc
        ex      %r4,0(%r3)
+.Lmemset_exit:
        BR_EX   %r14
 .Lmemset_fill:
        stc     %r3,0(%r2)
        cghi    %r4,1
        lgr     %r1,%r2
-       ber     %r14
+       je      .Lmemset_fill_exit
        aghi    %r4,-2
        srlg    %r3,%r4,8
        ltgr    %r3,%r3
@@ -58,6 +59,7 @@ ENTRY(memset)
 .Lmemset_fill_rest:
        larl    %r3,.Lmemset_mvc
        ex      %r4,0(%r3)
+.Lmemset_fill_exit:
        BR_EX   %r14
 .Lmemset_xc:
        xc      0(1,%r1),0(%r1)
@@ -71,7 +73,7 @@ ENTRY(memset)
  */
 ENTRY(memcpy)
        ltgr    %r4,%r4
-       bzr     %r14
+       jz      .Lmemcpy_exit
        aghi    %r4,-1
        srlg    %r5,%r4,8
        ltgr    %r5,%r5
@@ -80,6 +82,7 @@ ENTRY(memcpy)
 .Lmemcpy_rest:
        larl    %r5,.Lmemcpy_mvc
        ex      %r4,0(%r5)
+.Lmemcpy_exit:
        BR_EX   %r14
 .Lmemcpy_loop:
        mvc     0(256,%r1),0(%r3)


Reply via email to