Skip to content

Commit df90ca9

Browse files
rostedtH. Peter Anvin
authored andcommitted
x86, sparse: Do not force removal of __user when calling copy_to/from_user_nocheck()
Commit ff47ab4 "x86: Add 1/2/4/8 byte optimization to 64bit __copy_{from,to}_user_inatomic" added a "_nocheck" call in between the copy_to/from_user() and copy_user_generic(). As both the normal and nocheck versions of theses calls use the proper __user annotation, a typecast to remove it should not be added. This causes sparse to spin out the following warnings: arch/x86/include/asm/uaccess_64.h:207:47: warning: incorrect type in argument 2 (different address spaces) arch/x86/include/asm/uaccess_64.h:207:47: expected void const [noderef] <asn:1>*src arch/x86/include/asm/uaccess_64.h:207:47: got void const *<noident> arch/x86/include/asm/uaccess_64.h:207:47: warning: incorrect type in argument 2 (different address spaces) arch/x86/include/asm/uaccess_64.h:207:47: expected void const [noderef] <asn:1>*src arch/x86/include/asm/uaccess_64.h:207:47: got void const *<noident> arch/x86/include/asm/uaccess_64.h:207:47: warning: incorrect type in argument 2 (different address spaces) arch/x86/include/asm/uaccess_64.h:207:47: expected void const [noderef] <asn:1>*src arch/x86/include/asm/uaccess_64.h:207:47: got void const *<noident> arch/x86/include/asm/uaccess_64.h:207:47: warning: incorrect type in argument 2 (different address spaces) arch/x86/include/asm/uaccess_64.h:207:47: expected void const [noderef] <asn:1>*src arch/x86/include/asm/uaccess_64.h:207:47: got void const *<noident> Cc: Andi Kleen <ak@linux.intel.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/20140103164500.5f6478f5@gandalf.local.home Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
1 parent 802eee9 commit df90ca9

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

arch/x86/include/asm/uaccess_64.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,13 +204,13 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
204204
static __must_check __always_inline int
205205
__copy_from_user_inatomic(void *dst, const void __user *src, unsigned size)
206206
{
207-
return __copy_from_user_nocheck(dst, (__force const void *)src, size);
207+
return __copy_from_user_nocheck(dst, src, size);
208208
}
209209

210210
static __must_check __always_inline int
211211
__copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
212212
{
213-
return __copy_to_user_nocheck((__force void *)dst, src, size);
213+
return __copy_to_user_nocheck(dst, src, size);
214214
}
215215

216216
extern long __copy_user_nocache(void *dst, const void __user *src,

0 commit comments

Comments
 (0)