Skip to contentSkip to conversation

powerpc: fix handling of strnlen with zero len

PATCH RESEND New Jeff Mahoney 1 participant 1 message Mar 17, 2010 PowerPC

lore
Share & tools
lore
#0 lore raw

PATCH RESEND 1/1 powerpc: fix handling of strnlen with zero len

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: [email protected]

---
 arch/powerpc/lib/string.S |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
arch/powerpc/lib/string.S +3 -2
@@ -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
-- 

Jeff Mahoney
SUSE Labs