diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2014-11-04 05:54:29 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-11-04 06:46:33 -0500 |
commit | 0097761013253930341e23723d64e0845c3f9edd (patch) | |
tree | b0a8e44f720c2966e5c545f0cff5a638593cfb95 /arch/mips/lib | |
parent | 30fa0530ff87f6379e046629adfa3f4872a2d353 (diff) |
MIPS: Fix strnlen_user() return value in case of overlong strings.
We were returning maxlen like the userland strnlen if no '\0' character
was encountered while the kernel version is expected to return a value
larger than maxlen. Fixed to return maxlen + 1.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/lib')
-rw-r--r-- | arch/mips/lib/strnlen_user.S | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/mips/lib/strnlen_user.S b/arch/mips/lib/strnlen_user.S index f3af6995e2a6..7d12c0dded3d 100644 --- a/arch/mips/lib/strnlen_user.S +++ b/arch/mips/lib/strnlen_user.S | |||
@@ -40,9 +40,11 @@ FEXPORT(__strnlen_\func\()_nocheck_asm) | |||
40 | .else | 40 | .else |
41 | EX(lbe, t0, (v0), .Lfault\@) | 41 | EX(lbe, t0, (v0), .Lfault\@) |
42 | .endif | 42 | .endif |
43 | PTR_ADDIU v0, 1 | 43 | .set noreorder |
44 | bnez t0, 1b | 44 | bnez t0, 1b |
45 | 1: PTR_SUBU v0, a0 | 45 | 1: PTR_ADDIU v0, 1 |
46 | .set reorder | ||
47 | PTR_SUBU v0, a0 | ||
46 | jr ra | 48 | jr ra |
47 | END(__strnlen_\func\()_asm) | 49 | END(__strnlen_\func\()_asm) |
48 | 50 | ||