tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: bf5f89463f5b3109a72ed13ca62b57e90213387d commit: beba3a20bf90ce1b93e24592c3ebf0d0bb581bbe x86: switch to RAW_COPY_USER date: 6 weeks ago reproduce: # apt-get install sparse git checkout beba3a20bf90ce1b93e24592c3ebf0d0bb581bbe make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>) include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from >> sound/core/hwdep_compat.c:43:31: sparse: incorrect type in argument 2 >> (different address spaces) sound/core/hwdep_compat.c:43:31: expected void const *from sound/core/hwdep_compat.c:43:31: got struct snd_hwdep_dsp_image32 [noderef] <asn:1>*src include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from -- include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from sound/core/control.c:1299:17: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control.c:1299:26: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control.c:1300:17: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control.c:1300:26: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control.c:1306:48: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control.c:1310:40: sparse: restricted snd_ctl_elem_type_t degrades to integer include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from >> sound/core/control_compat.c:45:32: sparse: incorrect type in argument 2 >> (different address spaces) sound/core/control_compat.c:45:32: expected void const *from sound/core/control_compat.c:45:32: got struct snd_ctl_elem_list32 [noderef] <asn:1>*data32 include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> sound/core/control_compat.c:55:34: sparse: incorrect type in argument 2 >> (different address spaces) sound/core/control_compat.c:55:34: expected void const *from sound/core/control_compat.c:55:34: got struct snd_ctl_elem_list [noderef] <asn:1>*[assigned] data include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from sound/core/control_compat.c:210:21: sparse: incorrect type in assignment (different base types) sound/core/control_compat.c:210:21: expected int [signed] [assigned] err sound/core/control_compat.c:210:21: got restricted snd_ctl_elem_type_t [usertype] type sound/core/control_compat.c:220:14: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:222:14: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:224:14: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:226:14: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:254:21: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:255:21: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:286:21: sparse: restricted snd_ctl_elem_type_t degrades to integer sound/core/control_compat.c:287:21: sparse: restricted snd_ctl_elem_type_t degrades to integer include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from sound/core/control_compat.c:404:13: sparse: incorrect type in assignment (different base types) sound/core/control_compat.c:404:13: expected restricted snd_ctl_elem_type_t [usertype] type sound/core/control_compat.c:404:13: got signed int [signed] [explicitly-signed] <noident> -- include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from net/socket.c:1871:13: sparse: incorrect type in assignment (different address spaces) net/socket.c:1871:13: expected void *msg_control net/socket.c:1871:13: got void [noderef] <asn:1>*<noident> include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from >> net/socket.c:2637:32: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2637:32: expected void const *from net/socket.c:2637:32: got struct compat_ifreq [noderef] <asn:1>*uifr32 include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2644:34: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2644:34: expected void const *from net/socket.c:2644:34: got struct ifreq [noderef] <asn:1>*[assigned] uifr include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2677:47: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2677:47: expected void const *from net/socket.c:2677:47: got struct compat_ifreq [noderef] <asn:1>*[assigned] ifr32 include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from net/socket.c:2698:41: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2698:41: expected void const *from net/socket.c:2698:41: got struct ifreq [noderef] <asn:1>*[assigned] ifr include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from >> net/socket.c:2769:43: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2769:43: expected void const *from net/socket.c:2769:43: got char [noderef] <asn:1>( *<noident> )[16] include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2790:41: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2790:41: expected void const *from net/socket.c:2790:41: got struct compat_ethtool_rxnfc [noderef] <asn:1>*[assigned] compat_rxnfc include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2794:35: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2794:35: expected void const *from net/socket.c:2794:35: got unsigned long long [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2797:53: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2797:53: expected void const *from net/socket.c:2797:53: got unsigned int [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from >> net/socket.c:2807:48: sparse: incorrect type in argument 2 (different >> address spaces) net/socket.c:2807:48: expected void const *from net/socket.c:2807:48: got struct ethtool_rxnfc [noderef] <asn:1>*[assigned] rxnfc include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from net/socket.c:2811:35: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2811:35: expected void const *from net/socket.c:2811:35: got unsigned long long [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from net/socket.c:2814:60: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2814:60: expected void const *from net/socket.c:2814:60: got unsigned int [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from net/socket.c:2832:59: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2832:59: expected void const *from net/socket.c:2832:59: got unsigned int [noderef] <asn:1>* include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from net/socket.c:2848:32: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2848:32: expected void const *from net/socket.c:2848:32: got struct compat_ifreq [noderef] <asn:1>*uifr32 include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from net/socket.c:2923:32: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2923:32: expected void const *from net/socket.c:2923:32: got struct compat_ifreq [noderef] <asn:1>*uifr32 include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from net/socket.c:2944:50: sparse: incorrect type in argument 2 (different address spaces) net/socket.c:2944:50: expected void const *from net/socket.c:2944:50: got struct ifreq [noderef] <asn:1>*[assigned] uifr include/linux/uaccess.h:194:47: sparse: incorrect type in argument 1 (different address spaces) include/linux/uaccess.h:194:47: expected void const volatile [noderef] <asn:1>*<noident> include/linux/uaccess.h:194:47: got void const *from include/linux/uaccess.h:195:42: sparse: incorrect type in argument 2 (different address spaces) include/linux/uaccess.h:195:42: expected void const [noderef] <asn:1>*src include/linux/uaccess.h:195:42: got void const *from include/linux/uaccess.h:168:18: sparse: incorrect type in argument 1 (different modifiers) include/linux/uaccess.h:168:18: expected void *<noident> include/linux/uaccess.h:168:18: got void const *from -- >> lib/usercopy.c:21:13: sparse: incorrect type in argument 1 (different >> address spaces) lib/usercopy.c:21:13: expected void const volatile [noderef] <asn:1>*<noident> lib/usercopy.c:21:13: got void *to >> lib/usercopy.c:22:38: sparse: incorrect type in argument 1 (different >> address spaces) lib/usercopy.c:22:38: expected void [noderef] <asn:1>*dst lib/usercopy.c:22:38: got void *to >> lib/usercopy.c:22:42: sparse: incorrect type in argument 2 (different >> address spaces) lib/usercopy.c:22:42: expected void const *src lib/usercopy.c:22:42: got void const [noderef] <asn:1>*from lib/usercopy.c:19:15: sparse: symbol '_copy_to_user' redeclared with different type (originally declared at include/linux/uaccess.h:135) - incompatible argument 1 (different address spaces) vim +43 sound/core/hwdep_compat.c ^1da177e Linus Torvalds 2005-04-16 27 unsigned char name[64]; ^1da177e Linus Torvalds 2005-04-16 28 u32 image; /* pointer */ ^1da177e Linus Torvalds 2005-04-16 29 u32 length; ^1da177e Linus Torvalds 2005-04-16 30 u32 driver_data; ^1da177e Linus Torvalds 2005-04-16 31 } /* don't set packed attribute here */; ^1da177e Linus Torvalds 2005-04-16 32 d9a98de2 Takashi Iwai 2005-11-17 33 static int snd_hwdep_dsp_load_compat(struct snd_hwdep *hw, d9a98de2 Takashi Iwai 2005-11-17 34 struct snd_hwdep_dsp_image32 __user *src) ^1da177e Linus Torvalds 2005-04-16 35 { cb04e6b6 Al Viro 2006-10-10 36 struct snd_hwdep_dsp_image __user *dst; ^1da177e Linus Torvalds 2005-04-16 37 compat_caddr_t ptr; ^1da177e Linus Torvalds 2005-04-16 38 u32 val; ^1da177e Linus Torvalds 2005-04-16 39 ^1da177e Linus Torvalds 2005-04-16 40 dst = compat_alloc_user_space(sizeof(*dst)); ^1da177e Linus Torvalds 2005-04-16 41 ^1da177e Linus Torvalds 2005-04-16 42 /* index and name */ ^1da177e Linus Torvalds 2005-04-16 @43 if (copy_in_user(dst, src, 4 + 64)) ^1da177e Linus Torvalds 2005-04-16 44 return -EFAULT; ^1da177e Linus Torvalds 2005-04-16 45 if (get_user(ptr, &src->image) || ^1da177e Linus Torvalds 2005-04-16 46 put_user(compat_ptr(ptr), &dst->image)) ^1da177e Linus Torvalds 2005-04-16 47 return -EFAULT; ^1da177e Linus Torvalds 2005-04-16 48 if (get_user(val, &src->length) || ^1da177e Linus Torvalds 2005-04-16 49 put_user(val, &dst->length)) ^1da177e Linus Torvalds 2005-04-16 50 return -EFAULT; ^1da177e Linus Torvalds 2005-04-16 51 if (get_user(val, &src->driver_data) || :::::: The code at line 43 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <torva...@ppc970.osdl.org> :::::: CC: Linus Torvalds <torva...@ppc970.osdl.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation