45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
From: Jeff Mahoney <jeffm@suse.com>
|
|
To: linuxppc-dev@ozlabs.org
|
|
CC: Steven Rostedt <rostedt@goodmis.org>, Christian_Sellars@symantec.com
|
|
Subject: [PATCH] powerpc: fix handling of strnlen with zero len
|
|
Patch-mainline: submitted 17 Mar 2010
|
|
References: bnc#582681
|
|
|
|
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@symantec.com
|
|
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|
---
|
|
arch/powerpc/lib/string.S | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
--- 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
|