Blackfin: Annotate strnlen_user and strlen_user 'src' parameter with __user
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 22 Oct 2012 14:09:05 +0000 (16:09 +0200)
committerBob Liu <lliubbo@gmail.com>
Thu, 13 Dec 2012 05:50:57 +0000 (13:50 +0800)
The 'src' parameter of strnlen_user and strlen_user is supposed to take a
userspace pointer, so annotate it with __user. This fixes the following and
similar sparse warnings:

fs/binfmt_elf_fdpic.c:671:36: warning: incorrect type in argument 1 (different address spaces)
fs/binfmt_elf_fdpic.c:671:36:    expected char const *src
fs/binfmt_elf_fdpic.c:671:36:    got char [noderef] <asn:1>*[assigned] p
fs/binfmt_elf_fdpic.c:683:36: warning: incorrect type in argument 1 (different address spaces)
fs/binfmt_elf_fdpic.c:683:36:    expected char const *src
fs/binfmt_elf_fdpic.c:683:36:    got char [noderef] <asn:1>*[assigned] p

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
arch/blackfin/include/asm/uaccess.h

index ded2d05..3ee7b42 100644 (file)
@@ -237,18 +237,18 @@ strncpy_from_user(char *dst, const char __user *src, long count)
  * On exception, returns 0.
  * If the string is too long, returns a value greater than n.
  */
-static inline long __must_check strnlen_user(const char *src, long n)
+static inline long __must_check strnlen_user(const char __user *src, long n)
 {
        if (!access_ok(VERIFY_READ, src, 1))
                return 0;
-       return strnlen(src, n) + 1;
+       return strnlen((const char __force *)src, n) + 1;
 }
 
-static inline long __must_check strlen_user(const char *src)
+static inline long __must_check strlen_user(const char __user *src)
 {
        if (!access_ok(VERIFY_READ, src, 1))
                return 0;
-       return strlen(src) + 1;
+       return strlen((const char __force *)src) + 1;
 }
 
 /*