On Sat, Dec 09, 2017 at 05:24:24PM +0100, Christophe Leroy wrote: > CHECK lib/usercopy.c > lib/usercopy.c:26:13: warning: incorrect type in argument 1 (different > address spaces) > lib/usercopy.c:26:13: expected void const volatile [noderef] > <asn:1>*<noident> > lib/usercopy.c:26:13: got void *to > lib/usercopy.c:27:34: warning: incorrect type in argument 1 (different > address spaces) > lib/usercopy.c:27:34: expected void const volatile *p > lib/usercopy.c:27:34: got void const [noderef] <asn:1>*from > lib/usercopy.c:28:38: warning: incorrect type in argument 1 (different > address spaces) > lib/usercopy.c:28:38: expected void [noderef] <asn:1>*to > lib/usercopy.c:28:38: got void *to > lib/usercopy.c:28:42: warning: incorrect type in argument 2 (different > address spaces) > lib/usercopy.c:28:42: expected void const *from > lib/usercopy.c:28:42: got void const [noderef] <asn:1>*from > lib/usercopy.c:23:15: error: symbol '_copy_to_user' redeclared with different > type (originally declared at ./include/linux/uaccess.h:140) - incompatible > argument 1 (different address spaces) > CC lib/usercopy.o > > Fixes: d597580d37377 ("generic ...copy_..._user primitives") > Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr> > --- > lib/usercopy.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/usercopy.c b/lib/usercopy.c > index 15e2e6f..3744b2a 100644 > --- a/lib/usercopy.c > +++ b/lib/usercopy.c > @@ -20,7 +20,7 @@ EXPORT_SYMBOL(_copy_from_user); > #endif > > #ifndef INLINE_COPY_TO_USER > -unsigned long _copy_to_user(void *to, const void __user *from, unsigned long > n) > +unsigned long _copy_to_user(void __user *to, const void *from, unsigned long > n) > { > might_fault(); > if (likely(access_ok(VERIFY_WRITE, to, n))) { > --
Hi, The change is good. The commit message would better simply describe the problem instead of describing the symptom. For example, something like: The function _copy_to_user() is used to copy to address space. As such, the destination pointer should be annotated with '__user'. However, the function has the annotation wrongly, on the source instead of the destination (copy & paste error?). Fix this by moving the __user annotation to the correct argument. -- Luc Van Oostenryck