GIT: unionfs2-2.6.27.y: powerpc: Fix handling of strncmp with zero len

Erez Zadok ezk at fsl.cs.sunysb.edu
Thu Aug 12 23:15:27 EDT 2010


commit ae7aff994d0934d86a3278a65889f34629c778a7
Author: Jeff Mahoney <jeffm at suse.com>
Date:   Wed Mar 17 10:55:51 2010 +0000

    powerpc: Fix handling of strncmp with zero len
    
    commit 637a99022fb119b90fb281715d13172f0394fc12 upstream.
    
    Commit 0119536c, which added the assembly version of strncmp to
    powerpc, mentions that it adds two instructions to the version from
    boot/string.S to allow it to handle len=0. Unfortunately, it doesn't
    always return 0 when that is the case. The length is passed in r5, but
    the return value is passed back in r3. In certain cases, this will
    happen to work. Otherwise it will pass back the address of the first
    string as the return value.
    
    This patch lifts the len <= 0 handling code from memcpy to handle that
    case.
    
    Reported by: Christian_Sellars at symantec.com
    Signed-off-by: Jeff Mahoney <jeffm at suse.com>
    Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>

diff --git a/arch/powerpc/lib/string.S b/arch/powerpc/lib/string.S
index 64e2e49..3ac0cd3 100644
--- a/arch/powerpc/lib/string.S
+++ b/arch/powerpc/lib/string.S
@@ -71,7 +71,7 @@ _GLOBAL(strcmp)
 
 _GLOBAL(strncmp)
 	PPC_LCMPI r5,0
-	beqlr
+	ble-	2f
 	mtctr	r5
 	addi	r5,r3,-1
 	addi	r4,r4,-1
@@ -82,6 +82,8 @@ _GLOBAL(strncmp)
 	beqlr	1
 	bdnzt	eq,1b
 	blr
+2:	li	r3,0
+	blr
 
 _GLOBAL(strlen)
 	addi	r4,r3,-1


More information about the unionfs-cvs mailing list