From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5569414797726606903==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH] sparse: use static inline for __chk_{user, io}_ptr() Date: Thu, 03 Sep 2020 12:06:46 +0800 Message-ID: <202009031241.xa3U2FwD%lkp@intel.com> In-Reply-To: <20200828085301.78423-1-luc.vanoostenryck@gmail.com> List-Id: --===============5569414797726606903== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Luc, I love your patch! Perhaps something to improve: [auto build test WARNING on 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5] url: https://github.com/0day-ci/linux/commits/Luc-Van-Oostenryck/sparse-= use-static-inline-for-__chk_-user-io-_ptr/20200828-165431 base: 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5 config: sh-randconfig-s031-20200902 (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.2-191-g10164920-dirty # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=3Dsh = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) drivers/mtd/ubi/cdev.c:467:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:467:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:467:23: sparse: got signed int [noderef] [use= rtype] __user * >> drivers/mtd/ubi/cdev.c:467:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ >> drivers/mtd/ubi/cdev.c:467:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:467:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:512:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:512:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:512:23: sparse: got signed int [noderef] [use= rtype] __user * drivers/mtd/ubi/cdev.c:512:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:512:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:512:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:526:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:526:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:526:23: sparse: got signed int [noderef] [use= rtype] __user * drivers/mtd/ubi/cdev.c:526:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:526:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:526:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:882:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:882:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:882:23: sparse: got signed int [noderef] [use= rtype] __user * drivers/mtd/ubi/cdev.c:882:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:882:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:882:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:969:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:969:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:969:23: sparse: got signed int [noderef] [use= rtype] __user * drivers/mtd/ubi/cdev.c:969:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:969:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:969:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:984:23: sparse: sparse: incorrect type in initial= izer (different address spaces) @@ expected signed int const *__gu_addr= @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:984:23: sparse: expected signed int const *__= gu_addr drivers/mtd/ubi/cdev.c:984:23: sparse: got signed int [noderef] [use= rtype] __user * drivers/mtd/ubi/cdev.c:984:23: sparse: sparse: incorrect type in argumen= t 1 (different address spaces) @@ expected void const volatile [noderef= ] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:984:23: sparse: expected void const volatile = [noderef] __user *ptr drivers/mtd/ubi/cdev.c:984:23: sparse: got signed int const *__gu_ad= dr drivers/mtd/ubi/cdev.c:1061:23: sparse: sparse: incorrect type in initia= lizer (different address spaces) @@ expected signed int const *__gu_add= r @@ got signed int [noderef] [usertype] __user * @@ drivers/mtd/ubi/cdev.c:1061:23: sparse: expected signed int const *_= _gu_addr drivers/mtd/ubi/cdev.c:1061:23: sparse: got signed int [noderef] [us= ertype] __user * drivers/mtd/ubi/cdev.c:1061:23: sparse: sparse: incorrect type in argume= nt 1 (different address spaces) @@ expected void const volatile [nodere= f] __user *ptr @@ got signed int const *__gu_addr @@ drivers/mtd/ubi/cdev.c:1061:23: sparse: expected void const volatile= [noderef] __user *ptr drivers/mtd/ubi/cdev.c:1061:23: sparse: got signed int const *__gu_a= ddr -- drivers/auxdisplay/charlcd.c:670:21: sparse: sparse: incorrect type in i= nitializer (different address spaces) @@ expected char const *__gu_addr= @@ got char const [noderef] __user *tmp @@ drivers/auxdisplay/charlcd.c:670:21: sparse: expected char const *__= gu_addr drivers/auxdisplay/charlcd.c:670:21: sparse: got char const [noderef= ] __user *tmp >> drivers/auxdisplay/charlcd.c:670:21: sparse: sparse: incorrect type in a= rgument 1 (different address spaces) @@ expected void const volatile [n= oderef] __user *ptr @@ got char const *__gu_addr @@ >> drivers/auxdisplay/charlcd.c:670:21: sparse: expected void const vol= atile [noderef] __user *ptr drivers/auxdisplay/charlcd.c:670:21: sparse: got char const *__gu_ad= dr -- fs/fuse/dev.c:2231:22: sparse: sparse: incorrect type in initializer (di= fferent address spaces) @@ expected unsigned int const *__gu_addr @@ = got unsigned int [noderef] [usertype] __user * @@ fs/fuse/dev.c:2231:22: sparse: expected unsigned int const *__gu_addr fs/fuse/dev.c:2231:22: sparse: got unsigned int [noderef] [usertype]= __user * >> fs/fuse/dev.c:2231:22: sparse: sparse: incorrect type in argument 1 (dif= ferent address spaces) @@ expected void const volatile [noderef] __user= *ptr @@ got unsigned int const *__gu_addr @@ >> fs/fuse/dev.c:2231:22: sparse: expected void const volatile [noderef= ] __user *ptr fs/fuse/dev.c:2231:22: sparse: got unsigned int const *__gu_addr -- drivers/hwmon/w83793.c:1372:37: sparse: sparse: incorrect type in initia= lizer (different address spaces) @@ expected char const *__gu_addr @@ = got char const [noderef] __user * @@ drivers/hwmon/w83793.c:1372:37: sparse: expected char const *__gu_ad= dr drivers/hwmon/w83793.c:1372:37: sparse: got char const [noderef] __u= ser * >> drivers/hwmon/w83793.c:1372:37: sparse: sparse: incorrect type in argume= nt 1 (different address spaces) @@ expected void const volatile [nodere= f] __user *ptr @@ got char const *__gu_addr @@ >> drivers/hwmon/w83793.c:1372:37: sparse: expected void const volatile= [noderef] __user *ptr drivers/hwmon/w83793.c:1372:37: sparse: got char const *__gu_addr drivers/hwmon/w83793.c:1425:21: sparse: sparse: incorrect type in initia= lizer (different address spaces) @@ expected int const *__gu_addr @@ = got int [noderef] __user * @@ drivers/hwmon/w83793.c:1425:21: sparse: expected int const *__gu_addr drivers/hwmon/w83793.c:1425:21: sparse: got int [noderef] __user * >> drivers/hwmon/w83793.c:1425:21: sparse: sparse: incorrect type in argume= nt 1 (different address spaces) @@ expected void const volatile [nodere= f] __user *ptr @@ got int const *__gu_addr @@ drivers/hwmon/w83793.c:1425:21: sparse: expected void const volatile= [noderef] __user *ptr drivers/hwmon/w83793.c:1425:21: sparse: got int const *__gu_addr drivers/hwmon/w83793.c:1435:21: sparse: sparse: incorrect type in initia= lizer (different address spaces) @@ expected int const *__gu_addr @@ = got int [noderef] __user * @@ drivers/hwmon/w83793.c:1435:21: sparse: expected int const *__gu_addr drivers/hwmon/w83793.c:1435:21: sparse: got int [noderef] __user * drivers/hwmon/w83793.c:1435:21: sparse: sparse: incorrect type in argume= nt 1 (different address spaces) @@ expected void const volatile [nodere= f] __user *ptr @@ got int const *__gu_addr @@ drivers/hwmon/w83793.c:1435:21: sparse: expected void const volatile= [noderef] __user *ptr drivers/hwmon/w83793.c:1435:21: sparse: got int const *__gu_addr -- fs/orangefs/file.c:118:32: sparse: sparse: incorrect type in assignment = (different base types) @@ expected int open_for_write @@ got restri= cted fmode_t @@ fs/orangefs/file.c:118:32: sparse: expected int open_for_write fs/orangefs/file.c:118:32: sparse: got restricted fmode_t fs/orangefs/file.c:119:31: sparse: sparse: incorrect type in assignment = (different base types) @@ expected int open_for_read @@ got restric= ted fmode_t @@ fs/orangefs/file.c:119:31: sparse: expected int open_for_read fs/orangefs/file.c:119:31: sparse: got restricted fmode_t fs/orangefs/file.c:424:21: sparse: sparse: incorrect type in initializer= (different address spaces) @@ expected int const *__gu_addr @@ got= int [noderef] __user * @@ fs/orangefs/file.c:424:21: sparse: expected int const *__gu_addr fs/orangefs/file.c:424:21: sparse: got int [noderef] __user * >> fs/orangefs/file.c:424:21: sparse: sparse: incorrect type in argument 1 = (different address spaces) @@ expected void const volatile [noderef] __= user *ptr @@ got int const *__gu_addr @@ >> fs/orangefs/file.c:424:21: sparse: expected void const volatile [nod= eref] __user *ptr fs/orangefs/file.c:424:21: sparse: got int const *__gu_addr -- drivers/vhost/vdpa.c:361:13: sparse: sparse: incorrect type in initializ= er (different address spaces) @@ expected unsigned int const *__gu_addr= @@ got unsigned int [noderef] [usertype] __user * @@ drivers/vhost/vdpa.c:361:13: sparse: expected unsigned int const *__= gu_addr drivers/vhost/vdpa.c:361:13: sparse: got unsigned int [noderef] [use= rtype] __user * >> drivers/vhost/vdpa.c:361:13: sparse: sparse: incorrect type in argument = 1 (different address spaces) @@ expected void const volatile [noderef] = __user *ptr @@ got unsigned int const *__gu_addr @@ >> drivers/vhost/vdpa.c:361:13: sparse: expected void const volatile [n= oderef] __user *ptr drivers/vhost/vdpa.c:361:13: sparse: got unsigned int const *__gu_ad= dr -- drivers/vhost/scsi.c:1697:21: sparse: sparse: incorrect type in initiali= zer (different address spaces) @@ expected unsigned int const *__gu_add= r @@ got unsigned int [noderef] [usertype] __user *eventsp @@ drivers/vhost/scsi.c:1697:21: sparse: expected unsigned int const *_= _gu_addr drivers/vhost/scsi.c:1697:21: sparse: got unsigned int [noderef] [us= ertype] __user *eventsp >> drivers/vhost/scsi.c:1697: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/vhost/scsi.c:1697:21: sparse: expected void const volatile [= noderef] __user *ptr drivers/vhost/scsi.c:1697:21: sparse: got unsigned int const *__gu_a= ddr -- kernel/bpf/cgroup.c:1439:21: sparse: sparse: incorrect type in initializ= er (different address spaces) @@ expected int const *__gu_addr @@ g= ot int [noderef] __user *optlen @@ kernel/bpf/cgroup.c:1439:21: sparse: expected int const *__gu_addr kernel/bpf/cgroup.c:1439:21: sparse: got int [noderef] __user *optlen >> kernel/bpf/cgroup.c:1439:21: sparse: sparse: incorrect type in argument = 1 (different address spaces) @@ expected void const volatile [noderef] = __user *ptr @@ got int const *__gu_addr @@ >> kernel/bpf/cgroup.c:1439:21: sparse: expected void const volatile [n= oderef] __user *ptr kernel/bpf/cgroup.c:1439:21: sparse: got int const *__gu_addr -- fs/verity/measure.c:42:13: sparse: sparse: incorrect type in initializer= (different address spaces) @@ expected unsigned short const *__gu_addr= @@ got unsigned short [noderef] __user * @@ fs/verity/measure.c:42:13: sparse: expected unsigned short const *__= gu_addr fs/verity/measure.c:42:13: sparse: got unsigned short [noderef] __us= er * >> fs/verity/measure.c:42:13: sparse: sparse: incorrect type in argument 1 = (different address spaces) @@ expected void const volatile [noderef] __= user *ptr @@ got unsigned short const *__gu_addr @@ >> fs/verity/measure.c:42:13: sparse: expected void const volatile [nod= eref] __user *ptr fs/verity/measure.c:42:13: sparse: got unsigned short const *__gu_ad= dr -- fs/hfsplus/ioctl.c:42:50: sparse: sparse: incorrect type in assignment (= different base types) @@ expected unsigned int @@ got restricted __= be32 [usertype] @@ fs/hfsplus/ioctl.c:42:50: sparse: expected unsigned int fs/hfsplus/ioctl.c:42:50: sparse: got restricted __be32 [usertype] fs/hfsplus/ioctl.c:50:50: sparse: sparse: incorrect type in assignment (= different base types) @@ expected unsigned int @@ got restricted __= be32 [usertype] @@ fs/hfsplus/ioctl.c:50:50: sparse: expected unsigned int fs/hfsplus/ioctl.c:50:50: sparse: got restricted __be32 [usertype] fs/hfsplus/ioctl.c:53:50: sparse: sparse: incorrect type in assignment (= different base types) @@ expected unsigned int @@ got restricted __= be32 [usertype] @@ fs/hfsplus/ioctl.c:53:50: sparse: expected unsigned int fs/hfsplus/ioctl.c:53:50: sparse: got restricted __be32 [usertype] fs/hfsplus/ioctl.c:99:13: sparse: sparse: incorrect type in initializer = (different address spaces) @@ expected int const *__gu_addr @@ got = int [noderef] __user *user_flags @@ fs/hfsplus/ioctl.c:99:13: sparse: expected int const *__gu_addr fs/hfsplus/ioctl.c:99:13: sparse: got int [noderef] __user *user_fla= gs >> fs/hfsplus/ioctl.c:99:13: sparse: sparse: incorrect type in argument 1 (= different address spaces) @@ expected void const volatile [noderef] __u= ser *ptr @@ got int const *__gu_addr @@ >> fs/hfsplus/ioctl.c:99:13: sparse: expected void const volatile [node= ref] __user *ptr fs/hfsplus/ioctl.c:99:13: sparse: got int const *__gu_addr -- sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *arg @@ sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: got int [noderef]= __user *arg >> sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ >> sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_timer.c:224:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *arg @@ sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: got int [noderef]= __user *arg sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_timer.c:243:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *arg @@ sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: got int [noderef]= __user *arg sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_timer.c:247:21: sparse: got int const *__= gu_addr -- sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: sparse: incorrect type= in initializer (different address spaces) @@ expected int const *__gu_= addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: expected int const= *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: got int [noderef] = __user *p >> sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: sparse: incorrect type= in argument 1 (different address spaces) @@ expected void const volati= le [noderef] __user *ptr @@ got int const *__gu_addr @@ >> sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: expected void cons= t volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:97:21: sparse: got int const *__g= u_addr sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: got int [noderef]= __user *p sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:115:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: got int [noderef]= __user *p sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:126:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: got int [noderef]= __user *p sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:132:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: got int [noderef]= __user *p sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:150:21: sparse: got int const *__= gu_addr sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: sparse: incorrect typ= e in initializer (different address spaces) @@ expected int const *__gu= _addr @@ got int [noderef] __user *p @@ sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: expected int cons= t *__gu_addr sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: got int [noderef]= __user *p sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: sparse: incorrect typ= e in argument 1 (different address spaces) @@ expected void const volat= ile [noderef] __user *ptr @@ got int const *__gu_addr @@ sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: expected void con= st volatile [noderef] __user *ptr sound/core/seq/oss/seq_oss_ioctl.c:162:21: sparse: got int const *__= gu_addr -- fs/ubifs/ioctl.c:162:21: sparse: sparse: incorrect type in initializer (= different address spaces) @@ expected int const *__gu_addr @@ got i= nt [noderef] __user * @@ fs/ubifs/ioctl.c:162:21: sparse: expected int const *__gu_addr fs/ubifs/ioctl.c:162:21: sparse: got int [noderef] __user * >> fs/ubifs/ioctl.c:162:21: sparse: sparse: incorrect type in argument 1 (d= ifferent address spaces) @@ expected void const volatile [noderef] __us= er *ptr @@ got int const *__gu_addr @@ >> fs/ubifs/ioctl.c:162:21: sparse: expected void const volatile [noder= ef] __user *ptr fs/ubifs/ioctl.c:162:21: sparse: got int const *__gu_addr -- fs/xfs/xfs_ioctl.c:2257:21: sparse: sparse: incorrect type in initialize= r (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 *__g= u_addr fs/xfs/xfs_ioctl.c:2257:21: sparse: got unsigned int [noderef] [user= type] __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 [no= deref] __user *ptr fs/xfs/xfs_ioctl.c:2257:21: sparse: got unsigned int const *__gu_addr # https://github.com/0day-ci/linux/commit/7d01c91ac34a64f0177bc6d058cc50e80= 5f59102 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Luc-Van-Oostenryck/sparse-use-static-inlin= e-for-__chk_-user-io-_ptr/20200828-165431 git checkout 7d01c91ac34a64f0177bc6d058cc50e805f59102 vim +467 drivers/mtd/ubi/cdev.c 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 377 = f429b2ea8eadb5a Artem Bityutskiy 2009-01-16 378 static long vol_cdev_i= octl(struct file *file, unsigned int cmd, f429b2ea8eadb5a Artem Bityutskiy 2009-01-16 379 unsigned long ar= g) 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 380 { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 381 int err =3D 0; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 382 struct ubi_volume_des= c *desc =3D file->private_data; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 383 struct ubi_volume *vo= l =3D desc->vol; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 384 struct ubi_device *ub= i =3D vol->ubi; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 385 void __user *argp =3D= (void __user *)arg; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 386 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 387 switch (cmd) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 388 /* Volume update comm= and */ 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 389 case UBI_IOCVOLUP: 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 390 { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 391 int64_t bytes, rsvd_= bytes; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 392 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 393 if (!capable(CAP_SYS= _RESOURCE)) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 394 err =3D -EPERM; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 395 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 396 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 397 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 398 err =3D copy_from_us= er(&bytes, argp, sizeof(int64_t)); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 399 if (err) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 400 err =3D -EFAULT; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 401 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 402 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 403 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 404 if (desc->mode =3D= =3D UBI_READONLY) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 405 err =3D -EROFS; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 406 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 407 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 408 = 73789a3d9fd8e50 Bruce Leonard 2008-07-03 409 rsvd_bytes =3D (long= long)vol->reserved_pebs * 5f09aaa9b30c91e Boris Brezillon 2016-09-16 410 vol->usable_leb_s= ize; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 411 if (bytes < 0 || byt= es > rsvd_bytes) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 412 err =3D -EINVAL; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 413 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 414 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 415 = 45fc5c81d03601d Tanya Brokhman 2014-11-09 416 err =3D get_exclusiv= e(desc); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 417 if (err < 0) 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 418 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 419 = 1b68d0eea5daddc Artem Bityutskiy 2008-01-24 420 err =3D ubi_start_up= date(ubi, vol, bytes); fda322a1b3b9e8e Ezequiel Garcia 2014-08-29 421 if (bytes =3D=3D 0) { fda322a1b3b9e8e Ezequiel Garcia 2014-08-29 422 ubi_volume_notify(u= bi, vol, UBI_VOLUME_UPDATED); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 423 revoke_exclusive(de= sc, UBI_READWRITE); fda322a1b3b9e8e Ezequiel Garcia 2014-08-29 424 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 425 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 426 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 427 = e653879c269735c Artem Bityutskiy 2008-01-24 428 /* Atomic logical era= seblock change command */ e653879c269735c Artem Bityutskiy 2008-01-24 429 case UBI_IOCEBCH: e653879c269735c Artem Bityutskiy 2008-01-24 430 { e653879c269735c Artem Bityutskiy 2008-01-24 431 struct ubi_leb_chang= e_req req; e653879c269735c Artem Bityutskiy 2008-01-24 432 = e653879c269735c Artem Bityutskiy 2008-01-24 433 err =3D copy_from_us= er(&req, argp, e653879c269735c Artem Bityutskiy 2008-01-24 434 sizeof(struct= ubi_leb_change_req)); e653879c269735c Artem Bityutskiy 2008-01-24 435 if (err) { e653879c269735c Artem Bityutskiy 2008-01-24 436 err =3D -EFAULT; e653879c269735c Artem Bityutskiy 2008-01-24 437 break; e653879c269735c Artem Bityutskiy 2008-01-24 438 } e653879c269735c Artem Bityutskiy 2008-01-24 439 = e653879c269735c Artem Bityutskiy 2008-01-24 440 if (desc->mode =3D= =3D UBI_READONLY || e653879c269735c Artem Bityutskiy 2008-01-24 441 vol->vol_type = =3D=3D UBI_STATIC_VOLUME) { e653879c269735c Artem Bityutskiy 2008-01-24 442 err =3D -EROFS; e653879c269735c Artem Bityutskiy 2008-01-24 443 break; e653879c269735c Artem Bityutskiy 2008-01-24 444 } e653879c269735c Artem Bityutskiy 2008-01-24 445 = e653879c269735c Artem Bityutskiy 2008-01-24 446 /* Validate the requ= est */ e653879c269735c Artem Bityutskiy 2008-01-24 447 err =3D -EINVAL; 9a5f09ac0ab83e4 Boris Brezillon 2016-09-16 448 if (!ubi_leb_valid(v= ol, req.lnum) || 299d0c5b27346a7 Brian Norris 2015-02-28 449 req.bytes < 0 ||= req.bytes > vol->usable_leb_size) e653879c269735c Artem Bityutskiy 2008-01-24 450 break; e653879c269735c Artem Bityutskiy 2008-01-24 451 = 45fc5c81d03601d Tanya Brokhman 2014-11-09 452 err =3D get_exclusiv= e(desc); e653879c269735c Artem Bityutskiy 2008-01-24 453 if (err < 0) e653879c269735c Artem Bityutskiy 2008-01-24 454 break; e653879c269735c Artem Bityutskiy 2008-01-24 455 = e653879c269735c Artem Bityutskiy 2008-01-24 456 err =3D ubi_start_le= b_change(ubi, vol, &req); e653879c269735c Artem Bityutskiy 2008-01-24 457 if (req.bytes =3D=3D= 0) e653879c269735c Artem Bityutskiy 2008-01-24 458 revoke_exclusive(de= sc, UBI_READWRITE); e653879c269735c Artem Bityutskiy 2008-01-24 459 break; e653879c269735c Artem Bityutskiy 2008-01-24 460 } e653879c269735c Artem Bityutskiy 2008-01-24 461 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 462 /* Logical eraseblock= erasure command */ 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 463 case UBI_IOCEBER: 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 464 { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 465 int32_t lnum; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 466 = bf07803a6827ef8 Christoph Hellwig 2007-05-17 @467 err =3D get_user(lnu= m, (__user int32_t *)argp); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 468 if (err) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 469 err =3D -EFAULT; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 470 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 471 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 472 = e653879c269735c Artem Bityutskiy 2008-01-24 473 if (desc->mode =3D= =3D UBI_READONLY || e653879c269735c Artem Bityutskiy 2008-01-24 474 vol->vol_type = =3D=3D UBI_STATIC_VOLUME) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 475 err =3D -EROFS; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 476 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 477 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 478 = 9a5f09ac0ab83e4 Boris Brezillon 2016-09-16 479 if (!ubi_leb_valid(v= ol, lnum)) { 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 480 err =3D -EINVAL; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 481 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 482 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 483 = c8566350a3229ca Artem Bityutskiy 2008-07-16 484 dbg_gen("erase LEB %= d:%d", vol->vol_id, lnum); 89b96b692906683 Artem Bityutskiy 2007-12-16 485 err =3D ubi_eba_unma= p_leb(ubi, vol, lnum); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 486 if (err) 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 487 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 488 = 62f384552b6756c Joel Reardon 2012-05-20 489 err =3D ubi_wl_flush= (ubi, UBI_ALL, UBI_ALL); 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 490 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 491 } 141e6ebd1b1759b Corentin Chary 2009-01-05 492 = 141e6ebd1b1759b Corentin Chary 2009-01-05 493 /* Logical eraseblock= map command */ 141e6ebd1b1759b Corentin Chary 2009-01-05 494 case UBI_IOCEBMAP: 141e6ebd1b1759b Corentin Chary 2009-01-05 495 { 141e6ebd1b1759b Corentin Chary 2009-01-05 496 struct ubi_map_req r= eq; 141e6ebd1b1759b Corentin Chary 2009-01-05 497 = 141e6ebd1b1759b Corentin Chary 2009-01-05 498 err =3D copy_from_us= er(&req, argp, sizeof(struct ubi_map_req)); 141e6ebd1b1759b Corentin Chary 2009-01-05 499 if (err) { 141e6ebd1b1759b Corentin Chary 2009-01-05 500 err =3D -EFAULT; 141e6ebd1b1759b Corentin Chary 2009-01-05 501 break; 141e6ebd1b1759b Corentin Chary 2009-01-05 502 } b36a261e8c0ab32 Richard Weinberger 2012-05-14 503 err =3D ubi_leb_map(= desc, req.lnum); 141e6ebd1b1759b Corentin Chary 2009-01-05 504 break; 141e6ebd1b1759b Corentin Chary 2009-01-05 505 } c3da23be1673be4 Corentin Chary 2009-01-05 506 = c3da23be1673be4 Corentin Chary 2009-01-05 507 /* Logical eraseblock= un-map command */ c3da23be1673be4 Corentin Chary 2009-01-05 508 case UBI_IOCEBUNMAP: c3da23be1673be4 Corentin Chary 2009-01-05 509 { c3da23be1673be4 Corentin Chary 2009-01-05 510 int32_t lnum; c3da23be1673be4 Corentin Chary 2009-01-05 511 = c3da23be1673be4 Corentin Chary 2009-01-05 512 err =3D get_user(lnu= m, (__user int32_t *)argp); c3da23be1673be4 Corentin Chary 2009-01-05 513 if (err) { c3da23be1673be4 Corentin Chary 2009-01-05 514 err =3D -EFAULT; c3da23be1673be4 Corentin Chary 2009-01-05 515 break; c3da23be1673be4 Corentin Chary 2009-01-05 516 } c3da23be1673be4 Corentin Chary 2009-01-05 517 err =3D ubi_leb_unma= p(desc, lnum); c3da23be1673be4 Corentin Chary 2009-01-05 518 break; c3da23be1673be4 Corentin Chary 2009-01-05 519 } a27ce8f55dd5fdd Corentin Chary 2009-01-05 520 = a27ce8f55dd5fdd Corentin Chary 2009-01-05 521 /* Check if logical e= raseblock is mapped command */ a27ce8f55dd5fdd Corentin Chary 2009-01-05 522 case UBI_IOCEBISMAP: a27ce8f55dd5fdd Corentin Chary 2009-01-05 523 { a27ce8f55dd5fdd Corentin Chary 2009-01-05 524 int32_t lnum; a27ce8f55dd5fdd Corentin Chary 2009-01-05 525 = a27ce8f55dd5fdd Corentin Chary 2009-01-05 526 err =3D get_user(lnu= m, (__user int32_t *)argp); a27ce8f55dd5fdd Corentin Chary 2009-01-05 527 if (err) { a27ce8f55dd5fdd Corentin Chary 2009-01-05 528 err =3D -EFAULT; a27ce8f55dd5fdd Corentin Chary 2009-01-05 529 break; a27ce8f55dd5fdd Corentin Chary 2009-01-05 530 } a27ce8f55dd5fdd Corentin Chary 2009-01-05 531 err =3D ubi_is_mappe= d(desc, lnum); a27ce8f55dd5fdd Corentin Chary 2009-01-05 532 break; a27ce8f55dd5fdd Corentin Chary 2009-01-05 533 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 534 = 766fb95ba06e1bb Sidney Amani 2009-01-27 535 /* Set volume propert= y command */ 6748482f4153fc0 Artem Bityutskiy 2011-03-15 536 case UBI_IOCSETVOLPRO= P: 766fb95ba06e1bb Sidney Amani 2009-01-27 537 { 6748482f4153fc0 Artem Bityutskiy 2011-03-15 538 struct ubi_set_vol_p= rop_req req; 766fb95ba06e1bb Sidney Amani 2009-01-27 539 = 766fb95ba06e1bb Sidney Amani 2009-01-27 540 err =3D copy_from_us= er(&req, argp, 6748482f4153fc0 Artem Bityutskiy 2011-03-15 541 sizeof(struct= ubi_set_vol_prop_req)); 766fb95ba06e1bb Sidney Amani 2009-01-27 542 if (err) { 766fb95ba06e1bb Sidney Amani 2009-01-27 543 err =3D -EFAULT; 766fb95ba06e1bb Sidney Amani 2009-01-27 544 break; 766fb95ba06e1bb Sidney Amani 2009-01-27 545 } 766fb95ba06e1bb Sidney Amani 2009-01-27 546 switch (req.property= ) { 6748482f4153fc0 Artem Bityutskiy 2011-03-15 547 case UBI_VOL_PROP_DI= RECT_WRITE: f089c0b28cdba10 Artem Bityutskiy 2009-05-07 548 mutex_lock(&ubi->de= vice_mutex); 766fb95ba06e1bb Sidney Amani 2009-01-27 549 desc->vol->direct_w= rites =3D !!req.value; f089c0b28cdba10 Artem Bityutskiy 2009-05-07 550 mutex_unlock(&ubi->= device_mutex); 766fb95ba06e1bb Sidney Amani 2009-01-27 551 break; 766fb95ba06e1bb Sidney Amani 2009-01-27 552 default: 766fb95ba06e1bb Sidney Amani 2009-01-27 553 err =3D -EINVAL; 766fb95ba06e1bb Sidney Amani 2009-01-27 554 break; 766fb95ba06e1bb Sidney Amani 2009-01-27 555 } 766fb95ba06e1bb Sidney Amani 2009-01-27 556 break; 766fb95ba06e1bb Sidney Amani 2009-01-27 557 } 766fb95ba06e1bb Sidney Amani 2009-01-27 558 = 8af871887fcba47 Artem Bityutskiy 2014-03-05 559 /* Create a R/O block= device on top of the UBI volume */ 8af871887fcba47 Artem Bityutskiy 2014-03-05 560 case UBI_IOCVOLCRBLK: 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 561 { 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 562 struct ubi_volume_in= fo vi; 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 563 = 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 564 ubi_get_volume_info(= desc, &vi); 4d283ee2517303a Artem Bityutskiy 2014-03-04 565 err =3D ubiblock_cre= ate(&vi); 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 566 break; 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 567 } 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 568 = 8af871887fcba47 Artem Bityutskiy 2014-03-05 569 /* Remove the R/O blo= ck device */ 8af871887fcba47 Artem Bityutskiy 2014-03-05 570 case UBI_IOCVOLRMBLK: 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 571 { 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 572 struct ubi_volume_in= fo vi; 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 573 = 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 574 ubi_get_volume_info(= desc, &vi); 4d283ee2517303a Artem Bityutskiy 2014-03-04 575 err =3D ubiblock_rem= ove(&vi); 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 576 break; 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 577 } 9d54c8a33eec782 Ezequiel Garcia 2014-02-25 578 = 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 579 default: 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 580 err =3D -ENOTTY; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 581 break; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 582 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 583 return err; 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 584 } 801c135ce73d5df Artem B. Bityutskiy 2006-06-27 585 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============5569414797726606903== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 lOkwMjP/gT8AnSQJZdL/H4HwLZUAXAEA --===============5569414797726606903==--