MIPS: Fix strnlen_user access check
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>
Thu, 15 Apr 2021 21:21:11 +0000 (23:21 +0200)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Thu, 15 Apr 2021 21:42:21 +0000 (23:42 +0200)
Commit 04324f44cb69 ("MIPS: Remove get_fs/set_fs") changed the access_ok
for strnlen_user to check the whole range, which broke some callers
of strndup_user(). Restore the old behaviour and just check the first byte.

Fixes: 04324f44cb69 ("MIPS: Remove get_fs/set_fs")
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/include/asm/uaccess.h

index ab47e59..783fecc 100644 (file)
@@ -614,8 +614,8 @@ static inline long strnlen_user(const char __user *s, long n)
 {
        long res;
 
-       if (!access_ok(s, n))
-               return -0;
+       if (!access_ok(s, 1))
+               return 0;
 
        might_fault();
        __asm__ __volatile__(