Hi Luc, First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 0da0a8a0a0e1845f495431c3d8d733d2bbf9e9e5 commit: e5fc436f06eef54ef512ea55a9db8eb9f2e76959 sparse: use static inline for __chk_{user,io}_ptr() date: 5 months ago config: sh-randconfig-s031-20210117 (attached as .config) compiler: sh4-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-208-g46a52ca4-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e5fc436f06eef54ef512ea55a9db8eb9f2e76959 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout e5fc436f06eef54ef512ea55a9db8eb9f2e76959 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sh If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> "sparse warnings: (new ones prefixed by >>)" fs/fat/file.c:44:15: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user *user_attr @@ fs/fat/file.c:44:15: sparse: expected unsigned int const *__gu_addr fs/fat/file.c:44:15: sparse: got unsigned int [noderef] [usertype] __user *user_attr >> fs/fat/file.c:44:15: sparse: sparse: incorrect type in argument 1 (different >> address spaces) @@ expected void const volatile [noderef] __user *ptr @@ >> got unsigned int const *__gu_addr @@ fs/fat/file.c:44:15: sparse: expected void const volatile [noderef] __user *ptr fs/fat/file.c:44:15: sparse: got unsigned int const *__gu_addr -- fs/jfs/ioctl.c:83:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/jfs/ioctl.c:83:21: sparse: expected int const *__gu_addr fs/jfs/ioctl.c:83:21: sparse: got int [noderef] __user * >> fs/jfs/ioctl.c:83:21: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ fs/jfs/ioctl.c:83:21: sparse: expected void const volatile [noderef] __user *ptr fs/jfs/ioctl.c:83:21: sparse: got int const *__gu_addr -- fs/xfs/xfs_ioctl.c:2257:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ fs/xfs/xfs_ioctl.c:2257:21: sparse: expected unsigned int const *__gu_addr fs/xfs/xfs_ioctl.c:2257:21: sparse: got unsigned int [noderef] [usertype] __user * >> fs/xfs/xfs_ioctl.c:2257:21: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got unsigned int const *__gu_addr @@ fs/xfs/xfs_ioctl.c:2257:21: sparse: expected void const volatile [noderef] __user *ptr fs/xfs/xfs_ioctl.c:2257:21: sparse: got unsigned int const *__gu_addr -- fs/nilfs2/ioctl.c:138:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/nilfs2/ioctl.c:138:13: sparse: expected int const *__gu_addr fs/nilfs2/ioctl.c:138:13: sparse: got int [noderef] __user * >> fs/nilfs2/ioctl.c:138:13: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ fs/nilfs2/ioctl.c:138:13: sparse: expected void const volatile [noderef] __user *ptr fs/nilfs2/ioctl.c:138:13: sparse: got int const *__gu_addr -- >> arch/sh/kernel/process_32.c:42:9: sparse: sparse: incorrect type in argument >> 1 (different base types) @@ expected void const volatile [noderef] >> __iomem *ptr @@ got unsigned int @@ arch/sh/kernel/process_32.c:42:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/kernel/process_32.c:42:9: sparse: got unsigned int -- arch/sh/mm/init.c: note: in included file (through arch/sh/include/asm/mmu_context.h): >> arch/sh/include/asm/mmu_context_32.h:53:9: sparse: sparse: incorrect type in >> argument 1 (different base types) @@ expected void const volatile >> [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/include/asm/mmu_context_32.h:53:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/include/asm/mmu_context_32.h:53:9: sparse: got unsigned int -- >> arch/sh/mm/tlbflush_32.c:134:9: sparse: sparse: incorrect type in argument 1 >> (different base types) @@ expected void const volatile [noderef] __iomem >> *ptr @@ got unsigned int @@ arch/sh/mm/tlbflush_32.c:134:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlbflush_32.c:134:9: sparse: got unsigned int >> arch/sh/mm/tlbflush_32.c:134:9: sparse: sparse: incorrect type in argument 1 >> (different base types) @@ expected void const volatile [noderef] __iomem >> *ptr @@ got unsigned int @@ arch/sh/mm/tlbflush_32.c:134:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlbflush_32.c:134:9: sparse: got unsigned int -- >> arch/sh/mm/tlb-sh3.c:41:9: sparse: sparse: incorrect type in argument 1 >> (different base types) @@ expected void const volatile [noderef] __iomem >> *ptr @@ got unsigned int @@ arch/sh/mm/tlb-sh3.c:41:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlb-sh3.c:41:9: sparse: got unsigned int arch/sh/mm/tlb-sh3.c:48:9: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected void const volatile [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/mm/tlb-sh3.c:48:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlb-sh3.c:48:9: sparse: got unsigned int >> arch/sh/mm/tlb-sh3.c:75:17: sparse: sparse: incorrect type in argument 1 >> (different base types) @@ expected void const volatile [noderef] __iomem >> *ptr @@ got unsigned long @@ arch/sh/mm/tlb-sh3.c:75:17: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlb-sh3.c:75:17: sparse: got unsigned long arch/sh/mm/tlb-sh3.c:90:18: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected void const volatile [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/mm/tlb-sh3.c:90:18: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlb-sh3.c:90:18: sparse: got unsigned int arch/sh/mm/tlb-sh3.c:92:9: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected void const volatile [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/mm/tlb-sh3.c:92:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/mm/tlb-sh3.c:92:9: sparse: got unsigned int -- >> arch/sh/kernel/cpu/sh3/clock-sh7712.c:23:21: sparse: sparse: incorrect type >> in argument 1 (different base types) @@ expected void const volatile >> [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/kernel/cpu/sh3/clock-sh7712.c:23:21: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/kernel/cpu/sh3/clock-sh7712.c:23:21: sparse: got unsigned int arch/sh/kernel/cpu/sh3/clock-sh7712.c:35:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected void const volatile [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/kernel/cpu/sh3/clock-sh7712.c:35:21: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/kernel/cpu/sh3/clock-sh7712.c:35:21: sparse: got unsigned int arch/sh/kernel/cpu/sh3/clock-sh7712.c:47:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected void const volatile [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/kernel/cpu/sh3/clock-sh7712.c:47:21: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/kernel/cpu/sh3/clock-sh7712.c:47:21: sparse: got unsigned int -- fs/exec.c:418:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected char const [noderef] __user *const *__gu_addr @@ got char const [noderef] __user *const [noderef] __user * @@ fs/exec.c:418:13: sparse: expected char const [noderef] __user *const *__gu_addr fs/exec.c:418:13: sparse: got char const [noderef] __user *const [noderef] __user * fs/exec.c:418:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got char const [noderef] __user *const *__gu_addr @@ fs/exec.c:418:13: sparse: expected void const volatile [noderef] __user *ptr fs/exec.c:418:13: sparse: got char const [noderef] __user *const *__gu_addr fs/exec.c:419:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected char const [noderef] __user * @@ got void * @@ fs/exec.c:419:31: sparse: expected char const [noderef] __user * fs/exec.c:419:31: sparse: got void * fs/exec.c:1156:48: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *oldsighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ fs/exec.c:1156:48: sparse: expected struct sighand_struct *oldsighand fs/exec.c:1156:48: sparse: got struct sighand_struct [noderef] __rcu *sighand fs/exec.c:1263:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *parent @@ fs/exec.c:1263:56: sparse: expected struct task_struct *parent fs/exec.c:1263:56: sparse: got struct task_struct [noderef] __rcu *parent fs/exec.c:1298:47: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *oldsighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ fs/exec.c:1298:47: sparse: expected struct sighand_struct *oldsighand fs/exec.c:1298:47: sparse: got struct sighand_struct [noderef] __rcu *sighand fs/exec.c:1851:70: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *parent @@ fs/exec.c:1851:70: sparse: expected struct task_struct *tsk fs/exec.c:1851:70: sparse: got struct task_struct [noderef] __rcu *parent fs/exec.c: note: in included file (through arch/sh/include/asm/mmu_context.h): >> arch/sh/include/asm/mmu_context_32.h:53:9: sparse: sparse: incorrect type in >> argument 1 (different base types) @@ expected void const volatile >> [noderef] __iomem *ptr @@ got unsigned int @@ arch/sh/include/asm/mmu_context_32.h:53:9: sparse: expected void const volatile [noderef] __iomem *ptr arch/sh/include/asm/mmu_context_32.h:53:9: sparse: got unsigned int -- block/ioctl.c:66:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ block/ioctl.c:66:13: sparse: expected int const *__gu_addr block/ioctl.c:66:13: sparse: got int [noderef] __user * >> block/ioctl.c:66:13: sparse: sparse: incorrect type in argument 1 (different >> address spaces) @@ expected void const volatile [noderef] __user *ptr @@ >> got int const *__gu_addr @@ block/ioctl.c:66:13: sparse: expected void const volatile [noderef] __user *ptr block/ioctl.c:66:13: sparse: got int const *__gu_addr block/ioctl.c:66:39: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __user *const *__gu_addr @@ got void [noderef] __user *[noderef] __user * @@ block/ioctl.c:66:39: sparse: expected void [noderef] __user *const *__gu_addr block/ioctl.c:66:39: sparse: got void [noderef] __user *[noderef] __user * >> block/ioctl.c:66:39: sparse: sparse: incorrect type in argument 1 (different >> address spaces) @@ expected void const volatile [noderef] __user *ptr @@ >> got void [noderef] __user *const *__gu_addr @@ block/ioctl.c:66:39: sparse: expected void const volatile [noderef] __user *ptr block/ioctl.c:66:39: sparse: got void [noderef] __user *const *__gu_addr block/ioctl.c:393:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ block/ioctl.c:393:13: sparse: expected int const *__gu_addr block/ioctl.c:393:13: sparse: got int [noderef] __user * block/ioctl.c:393:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ block/ioctl.c:393:13: sparse: expected void const volatile [noderef] __user *ptr block/ioctl.c:393:13: sparse: got int const *__gu_addr block/ioctl.c:474:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user *argp @@ block/ioctl.c:474:13: sparse: expected int const *__gu_addr block/ioctl.c:474:13: sparse: got int [noderef] __user *argp block/ioctl.c:474:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ block/ioctl.c:474:13: sparse: expected void const volatile [noderef] __user *ptr block/ioctl.c:474:13: sparse: got int const *__gu_addr -- block/scsi_ioctl.c:65:28: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user *p @@ block/scsi_ioctl.c:65:28: sparse: expected int const *__gu_addr block/scsi_ioctl.c:65:28: sparse: got int [noderef] __user *p >> block/scsi_ioctl.c:65:28: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ block/scsi_ioctl.c:65:28: sparse: expected void const volatile [noderef] __user *ptr block/scsi_ioctl.c:65:28: sparse: got int const *__gu_addr block/scsi_ioctl.c:91:25: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user *p @@ block/scsi_ioctl.c:91:25: sparse: expected int const *__gu_addr block/scsi_ioctl.c:91:25: sparse: got int [noderef] __user *p block/scsi_ioctl.c:91:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ block/scsi_ioctl.c:91:25: sparse: expected void const volatile [noderef] __user *ptr block/scsi_ioctl.c:91:25: sparse: got int const *__gu_addr block/scsi_ioctl.c:433:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] __user * @@ block/scsi_ioctl.c:433:13: sparse: expected unsigned int const *__gu_addr block/scsi_ioctl.c:433:13: sparse: got unsigned int [noderef] __user * >> block/scsi_ioctl.c:433:13: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got unsigned int const *__gu_addr @@ block/scsi_ioctl.c:433:13: sparse: expected void const volatile [noderef] __user *ptr block/scsi_ioctl.c:433:13: sparse: got unsigned int const *__gu_addr block/scsi_ioctl.c:435:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] __user * @@ block/scsi_ioctl.c:435:13: sparse: expected unsigned int const *__gu_addr block/scsi_ioctl.c:435:13: sparse: got unsigned int [noderef] __user * block/scsi_ioctl.c:435:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int const *__gu_addr @@ block/scsi_ioctl.c:435:13: sparse: expected void const volatile [noderef] __user *ptr block/scsi_ioctl.c:435:13: sparse: got unsigned int const *__gu_addr block/scsi_ioctl.c:439:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned char const *__gu_addr @@ got unsigned char [noderef] __user * @@ block/scsi_ioctl.c:439:13: sparse: expected unsigned char const *__gu_addr block/scsi_ioctl.c:439:13: sparse: got unsigned char [noderef] __user * >> block/scsi_ioctl.c:439:13: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got unsigned char const *__gu_addr @@ block/scsi_ioctl.c:439:13: sparse: expected void const volatile [noderef] __user *ptr block/scsi_ioctl.c:439:13: sparse: got unsigned char const *__gu_addr -- drivers/gpu/drm/drm_crtc.c:708:29: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ drivers/gpu/drm/drm_crtc.c:708:29: sparse: expected unsigned int const *__gu_addr drivers/gpu/drm/drm_crtc.c:708:29: sparse: got unsigned int [noderef] [usertype] __user * >> drivers/gpu/drm/drm_crtc.c:708:29: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __user *ptr @@ got unsigned int const *__gu_addr @@ drivers/gpu/drm/drm_crtc.c:708:29: sparse: expected void const volatile [noderef] __user *ptr drivers/gpu/drm/drm_crtc.c:708:29: sparse: got unsigned int const *__gu_addr -- drivers/scsi/scsi_error.c:2341:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user *arg @@ drivers/scsi/scsi_error.c:2341:17: sparse: expected int const *__gu_addr drivers/scsi/scsi_error.c:2341:17: sparse: got int [noderef] __user *arg >> drivers/scsi/scsi_error.c:2341:17: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __user *ptr @@ got int const *__gu_addr @@ drivers/scsi/scsi_error.c:2341:17: sparse: expected void const volatile [noderef] __user *ptr drivers/scsi/scsi_error.c:2341:17: sparse: got int const *__gu_addr -- drivers/scsi/scsi_ioctl.c:48:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] __user * @@ drivers/scsi/scsi_ioctl.c:48:21: sparse: expected unsigned int const *__gu_addr drivers/scsi/scsi_ioctl.c:48:21: sparse: got unsigned int [noderef] __user * >> drivers/scsi/scsi_ioctl.c:48:21: sparse: sparse: incorrect type in argument >> 1 (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got unsigned int const *__gu_addr @@ drivers/scsi/scsi_ioctl.c:48:21: sparse: expected void const volatile [noderef] __user *ptr drivers/scsi/scsi_ioctl.c:48:21: sparse: got unsigned int const *__gu_addr -- drivers/video/fbdev/s3c-fb.c:1024:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ drivers/video/fbdev/s3c-fb.c:1024:21: sparse: expected unsigned int const *__gu_addr drivers/video/fbdev/s3c-fb.c:1024:21: sparse: got unsigned int [noderef] [usertype] __user * >> drivers/video/fbdev/s3c-fb.c:1024:21: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __user *ptr @@ got unsigned int const *__gu_addr @@ drivers/video/fbdev/s3c-fb.c:1024:21: sparse: expected void const volatile [noderef] __user *ptr drivers/video/fbdev/s3c-fb.c:1024:21: sparse: got unsigned int const *__gu_addr -- samples/vfio-mdev/mbochs.c:1270:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ samples/vfio-mdev/mbochs.c:1270:21: sparse: expected unsigned int const *__gu_addr samples/vfio-mdev/mbochs.c:1270:21: sparse: got unsigned int [noderef] [usertype] __user * >> samples/vfio-mdev/mbochs.c:1270:21: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __user *ptr @@ got unsigned int const *__gu_addr @@ samples/vfio-mdev/mbochs.c:1270:21: sparse: expected void const volatile [noderef] __user *ptr samples/vfio-mdev/mbochs.c:1270:21: sparse: got unsigned int const *__gu_addr samples/vfio-mdev/mbochs.c:1346:1: sparse: sparse: symbol 'mdev_type_attr_name' was not declared. Should it be static? samples/vfio-mdev/mbochs.c:1356:1: sparse: sparse: symbol 'mdev_type_attr_description' was not declared. Should it be static? samples/vfio-mdev/mbochs.c:1366:1: sparse: sparse: symbol 'mdev_type_attr_available_instances' was not declared. Should it be static? samples/vfio-mdev/mbochs.c:1373:1: sparse: sparse: symbol 'mdev_type_attr_device_api' was not declared. Should it be static? -- fs/reiserfs/ioctl.c:66:29: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/reiserfs/ioctl.c:66:29: sparse: expected int const *__gu_addr fs/reiserfs/ioctl.c:66:29: sparse: got int [noderef] __user * >> fs/reiserfs/ioctl.c:66:29: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ fs/reiserfs/ioctl.c:66:29: sparse: expected void const volatile [noderef] __user *ptr fs/reiserfs/ioctl.c:66:29: sparse: got int const *__gu_addr fs/reiserfs/ioctl.c:111:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/reiserfs/ioctl.c:111:21: sparse: expected int const *__gu_addr fs/reiserfs/ioctl.c:111:21: sparse: got int [noderef] __user * fs/reiserfs/ioctl.c:111:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ fs/reiserfs/ioctl.c:111:21: sparse: expected void const volatile [noderef] __user *ptr fs/reiserfs/ioctl.c:111:21: sparse: got int const *__gu_addr -- fs/ext4/ioctl.c:609:13: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ fs/ext4/ioctl.c:609:13: sparse: expected unsigned int const *__gu_addr fs/ext4/ioctl.c:609:13: sparse: got unsigned int [noderef] [usertype] __user * >> fs/ext4/ioctl.c:609:13: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got unsigned int const *__gu_addr @@ fs/ext4/ioctl.c:609:13: sparse: expected void const volatile [noderef] __user *ptr fs/ext4/ioctl.c:609:13: sparse: got unsigned int const *__gu_addr fs/ext4/ioctl.c:833:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/ext4/ioctl.c:833:21: sparse: expected int const *__gu_addr fs/ext4/ioctl.c:833:21: sparse: got int [noderef] __user * >> fs/ext4/ioctl.c:833:21: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ fs/ext4/ioctl.c:833:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext4/ioctl.c:833:21: sparse: got int const *__gu_addr fs/ext4/ioctl.c:884:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/ext4/ioctl.c:884:21: sparse: expected int const *__gu_addr fs/ext4/ioctl.c:884:21: sparse: got int [noderef] __user * fs/ext4/ioctl.c:884:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ fs/ext4/ioctl.c:884:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext4/ioctl.c:884:21: sparse: got int const *__gu_addr fs/ext4/ioctl.c:917:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned int const *__gu_addr @@ got unsigned int [noderef] [usertype] __user * @@ fs/ext4/ioctl.c:917:21: sparse: expected unsigned int const *__gu_addr fs/ext4/ioctl.c:917:21: sparse: got unsigned int [noderef] [usertype] __user * fs/ext4/ioctl.c:917:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int const *__gu_addr @@ fs/ext4/ioctl.c:917:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext4/ioctl.c:917:21: sparse: got unsigned int const *__gu_addr -- fs/ext2/ioctl.c:47:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/ext2/ioctl.c:47:21: sparse: expected int const *__gu_addr fs/ext2/ioctl.c:47:21: sparse: got int [noderef] __user * >> fs/ext2/ioctl.c:47:21: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void const volatile [noderef] >> __user *ptr @@ got int const *__gu_addr @@ fs/ext2/ioctl.c:47:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext2/ioctl.c:47:21: sparse: got int const *__gu_addr fs/ext2/ioctl.c:92:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/ext2/ioctl.c:92:21: sparse: expected int const *__gu_addr fs/ext2/ioctl.c:92:21: sparse: got int [noderef] __user * fs/ext2/ioctl.c:92:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ fs/ext2/ioctl.c:92:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext2/ioctl.c:92:21: sparse: got int const *__gu_addr fs/ext2/ioctl.c:123:21: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected int const *__gu_addr @@ got int [noderef] __user * @@ fs/ext2/ioctl.c:123:21: sparse: expected int const *__gu_addr fs/ext2/ioctl.c:123:21: sparse: got int [noderef] __user * fs/ext2/ioctl.c:123:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got int const *__gu_addr @@ fs/ext2/ioctl.c:123:21: sparse: expected void const volatile [noderef] __user *ptr fs/ext2/ioctl.c:123:21: sparse: got int const *__gu_addr vim +44 fs/fat/file.c 21bea495943f9532 Christoph Hellwig 2009-06-08 34 21bea495943f9532 Christoph Hellwig 2009-06-08 35 static int fat_ioctl_set_attributes(struct file *file, u32 __user *user_attr) ^1da177e4c3f4152 Linus Torvalds 2005-04-16 36 { 496ad9aa8ef44805 Al Viro 2013-01-23 37 struct inode *inode = file_inode(file); 21bea495943f9532 Christoph Hellwig 2009-06-08 38 struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); 21bea495943f9532 Christoph Hellwig 2009-06-08 39 int is_dir = S_ISDIR(inode->i_mode); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 40 u32 attr, oldattr; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 41 struct iattr ia; 21bea495943f9532 Christoph Hellwig 2009-06-08 42 int err; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 43 ^1da177e4c3f4152 Linus Torvalds 2005-04-16 @44 err = get_user(attr, user_attr); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 45 if (err) 21bea495943f9532 Christoph Hellwig 2009-06-08 46 goto out; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 47 a561be7100cd610b Al Viro 2011-11-23 48 err = mnt_want_write_file(file); 42a74f206b914db1 Dave Hansen 2008-02-15 49 if (err) e24f17da3560781e Jan Kara 2012-06-12 50 goto out; 5955102c9984fa08 Al Viro 2016-01-22 51 inode_lock(inode); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 52 ^1da177e4c3f4152 Linus Torvalds 2005-04-16 53 /* ^1da177e4c3f4152 Linus Torvalds 2005-04-16 54 * ATTR_VOLUME and ATTR_DIR cannot be changed; this also ^1da177e4c3f4152 Linus Torvalds 2005-04-16 55 * prevents the user from turning us into a VFAT ^1da177e4c3f4152 Linus Torvalds 2005-04-16 56 * longname entry. Also, we obviously can't set ^1da177e4c3f4152 Linus Torvalds 2005-04-16 57 * any of the NTFS attributes in the high 24 bits. ^1da177e4c3f4152 Linus Torvalds 2005-04-16 58 */ ^1da177e4c3f4152 Linus Torvalds 2005-04-16 59 attr &= 0xff & ~(ATTR_VOLUME | ATTR_DIR); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 60 /* Merge in ATTR_VOLUME and ATTR_DIR */ ^1da177e4c3f4152 Linus Torvalds 2005-04-16 61 attr |= (MSDOS_I(inode)->i_attrs & ATTR_VOLUME) | ^1da177e4c3f4152 Linus Torvalds 2005-04-16 62 (is_dir ? ATTR_DIR : 0); 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 63 oldattr = fat_make_attrs(inode); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 64 ^1da177e4c3f4152 Linus Torvalds 2005-04-16 65 /* Equivalent to a chmod() */ ^1da177e4c3f4152 Linus Torvalds 2005-04-16 66 ia.ia_valid = ATTR_MODE | ATTR_CTIME; c2050a454c7f123d Deepa Dinamani 2016-09-14 67 ia.ia_ctime = current_time(inode); 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 68 if (is_dir) 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 69 ia.ia_mode = fat_make_mode(sbi, attr, S_IRWXUGO); 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 70 else { 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 71 ia.ia_mode = fat_make_mode(sbi, attr, 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 72 S_IRUGO | S_IWUGO | (inode->i_mode & S_IXUGO)); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 73 } ^1da177e4c3f4152 Linus Torvalds 2005-04-16 74 ^1da177e4c3f4152 Linus Torvalds 2005-04-16 75 /* The root directory has no attributes */ ^1da177e4c3f4152 Linus Torvalds 2005-04-16 76 if (inode->i_ino == MSDOS_ROOT_INO && attr != ATTR_DIR) { ^1da177e4c3f4152 Linus Torvalds 2005-04-16 77 err = -EINVAL; e24f17da3560781e Jan Kara 2012-06-12 78 goto out_unlock_inode; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 79 } ^1da177e4c3f4152 Linus Torvalds 2005-04-16 80 21bea495943f9532 Christoph Hellwig 2009-06-08 81 if (sbi->options.sys_immutable && 21bea495943f9532 Christoph Hellwig 2009-06-08 82 ((attr | oldattr) & ATTR_SYS) && 21bea495943f9532 Christoph Hellwig 2009-06-08 83 !capable(CAP_LINUX_IMMUTABLE)) { ^1da177e4c3f4152 Linus Torvalds 2005-04-16 84 err = -EPERM; e24f17da3560781e Jan Kara 2012-06-12 85 goto out_unlock_inode; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 86 } ^1da177e4c3f4152 Linus Torvalds 2005-04-16 87 b1da47e29e467f1e Miklos Szeredi 2008-07-01 88 /* b1da47e29e467f1e Miklos Szeredi 2008-07-01 89 * The security check is questionable... We single b1da47e29e467f1e Miklos Szeredi 2008-07-01 90 * out the RO attribute for checking by the security b1da47e29e467f1e Miklos Szeredi 2008-07-01 91 * module, just because it maps to a file mode. b1da47e29e467f1e Miklos Szeredi 2008-07-01 92 */ 21bea495943f9532 Christoph Hellwig 2009-06-08 93 err = security_inode_setattr(file->f_path.dentry, &ia); b1da47e29e467f1e Miklos Szeredi 2008-07-01 94 if (err) e24f17da3560781e Jan Kara 2012-06-12 95 goto out_unlock_inode; b1da47e29e467f1e Miklos Szeredi 2008-07-01 96 ^1da177e4c3f4152 Linus Torvalds 2005-04-16 97 /* This MUST be done before doing anything irreversible... */ 21bea495943f9532 Christoph Hellwig 2009-06-08 98 err = fat_setattr(file->f_path.dentry, &ia); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 99 if (err) e24f17da3560781e Jan Kara 2012-06-12 100 goto out_unlock_inode; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 101 21bea495943f9532 Christoph Hellwig 2009-06-08 102 fsnotify_change(file->f_path.dentry, ia.ia_valid); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 103 if (sbi->options.sys_immutable) { ^1da177e4c3f4152 Linus Torvalds 2005-04-16 104 if (attr & ATTR_SYS) ^1da177e4c3f4152 Linus Torvalds 2005-04-16 105 inode->i_flags |= S_IMMUTABLE; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 106 else 1adffbae22332bb5 OGAWA Hirofumi 2011-05-31 107 inode->i_flags &= ~S_IMMUTABLE; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 108 } ^1da177e4c3f4152 Linus Torvalds 2005-04-16 109 9c0aa1b87bf541af OGAWA Hirofumi 2008-11-06 110 fat_save_attrs(inode, attr); ^1da177e4c3f4152 Linus Torvalds 2005-04-16 111 mark_inode_dirty(inode); 21bea495943f9532 Christoph Hellwig 2009-06-08 112 out_unlock_inode: 5955102c9984fa08 Al Viro 2016-01-22 113 inode_unlock(inode); e24f17da3560781e Jan Kara 2012-06-12 114 mnt_drop_write_file(file); 21bea495943f9532 Christoph Hellwig 2009-06-08 115 out: ^1da177e4c3f4152 Linus Torvalds 2005-04-16 116 return err; ^1da177e4c3f4152 Linus Torvalds 2005-04-16 117 } 21bea495943f9532 Christoph Hellwig 2009-06-08 118 :::::: The code at line 44 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 CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip