Blackfin: Annotate strncpy_from_user src parameter with __user
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 17 Oct 2012 14:28:02 +0000 (16:28 +0200)
committerBob Liu <lliubbo@gmail.com>
Thu, 13 Dec 2012 05:50:56 +0000 (13:50 +0800)
The src parameter of strncpy_from_user is supposed to take a string from
userspace, so it should be annotated with __user. Doing so fixes the following
and similar warnings from sparse:

kernel/sys.c:491:51: warning: incorrect type in argument 2 (different address spaces)
kernel/sys.c:491:51:    expected char const *src
kernel/sys.c:491:51:    got void [noderef] <asn:1>*arg
kernel/sys.c:2061:54: warning: incorrect type in argument 2 (different address spaces)
kernel/sys.c:2061:54:    expected char const *src
kernel/sys.c:2061:54:    got char [noderef] <asn:1>*<noident>

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

index 5cc111502822f70a970a6c91daf9971c3386cc84..3edb4afa30535c356065692436a720466cbb0169 100644 (file)
@@ -216,12 +216,12 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
  */
 
 static inline long __must_check
-strncpy_from_user(char *dst, const char *src, long count)
+strncpy_from_user(char *dst, const char __user *src, long count)
 {
        char *tmp;
        if (!access_ok(VERIFY_READ, src, 1))
                return -EFAULT;
-       strncpy(dst, src, count);
+       strncpy(dst, (const char __force *)src, count);
        for (tmp = dst; *tmp && count > 0; tmp++, count--) ;
        return (tmp - dst);
 }