This is a note to let you know that I've just added the patch titled

    sparc: Let memset return the address argument

to the 3.14-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     sparc-let-memset-return-the-address-argument.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From foo@baz Tue Oct 28 11:13:19 CST 2014
From: Andreas Larsson <[email protected]>
Date: Fri, 29 Aug 2014 17:08:21 +0200
Subject: sparc: Let memset return the address argument

From: Andreas Larsson <[email protected]>

[ Upstream commit 74cad25c076a2f5253312c2fe82d1a4daecc1323 ]

This makes memset follow the standard (instead of returning 0 on success). This
is needed when certain versions of gcc optimizes around memset calls and assume
that the address argument is preserved in %o0.

Signed-off-by: Andreas Larsson <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 arch/sparc/lib/memset.S |   18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

--- a/arch/sparc/lib/memset.S
+++ b/arch/sparc/lib/memset.S
@@ -3,8 +3,9 @@
  * Copyright (C) 1996,1997 Jakub Jelinek ([email protected])
  * Copyright (C) 1996 David S. Miller ([email protected])
  *
- * Returns 0, if ok, and number of bytes not yet set if exception
- * occurs and we were called as clear_user.
+ * Calls to memset returns initial %o0. Calls to bzero returns 0, if ok, and
+ * number of bytes not yet set if exception occurs and we were called as
+ * clear_user.
  */
 
 #include <asm/ptrace.h>
@@ -65,6 +66,8 @@ __bzero_begin:
        .globl  __memset_start, __memset_end
 __memset_start:
 memset:
+       mov     %o0, %g1
+       mov     1, %g4
        and     %o1, 0xff, %g3
        sll     %g3, 8, %g2
        or      %g3, %g2, %g3
@@ -89,6 +92,7 @@ memset:
         sub    %o0, %o2, %o0
 
 __bzero:
+       clr     %g4
        mov     %g0, %g3
 1:
        cmp     %o1, 7
@@ -151,8 +155,8 @@ __bzero:
        bne,a   8f
         EX(stb %g3, [%o0], and %o1, 1)
 8:
-       retl
-        clr    %o0
+       b       0f
+        nop
 7:
        be      13b
         orcc   %o1, 0, %g0
@@ -164,6 +168,12 @@ __bzero:
        bne     8b
         EX(stb %g3, [%o0 - 1], add %o1, 1)
 0:
+       andcc   %g4, 1, %g0
+       be      5f
+        nop
+       retl
+        mov    %g1, %o0
+5:
        retl
         clr    %o0
 __memset_end:


Patches currently in stable-queue which might be from [email protected] are

queue-3.14/sparc-let-memset-return-the-address-argument.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to