[drm-misc:for-linux-next 11/12] drivers/gpu/drm/nouveau/nouveau_exec.c:299:19: sparse: sparse: dereference of noderef expression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   git://anongit.freedesktop.org/drm/drm-misc for-linux-next
head:   82d750e9d2f5d0594c8f7057ce59127e701af781
commit: b88baab828713ce0b49b185444b2ee83bed373a8 [11/12] drm/nouveau: implement new VM_BIND uAPI
config: s390-randconfig-r071-20230730 (https://download.01.org/0day-ci/archive/20230805/202308051951.bErKWZ2A-lkp@xxxxxxxxx/config)
compiler: s390-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230805/202308051951.bErKWZ2A-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308051951.bErKWZ2A-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/nouveau/nouveau_exec.c:299:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:300:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:301:20: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:302:20: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:303:21: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:304:21: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:374:43: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:389:13: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_exec.c:390:17: sparse: sparse: dereference of noderef expression
--
   drivers/gpu/drm/nouveau/nouveau_drm.c:401:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:401:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:402:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:402:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:402:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:402:41: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:406:33: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/gpu/drm/nouveau/nouveau_drm.c:406:33: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/gpu/drm/nouveau/nouveau_drm.c:1214:9: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( [usertype] *func )( ... ) @@     got int ( * )( ... ) @@
   drivers/gpu/drm/nouveau/nouveau_drm.c:1214:9: sparse:     expected int ( [usertype] *func )( ... )
   drivers/gpu/drm/nouveau/nouveau_drm.c:1214:9: sparse:     got int ( * )( ... )
   drivers/gpu/drm/nouveau/nouveau_drm.c:1215:9: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( [usertype] *func )( ... ) @@     got int ( * )( ... ) @@
   drivers/gpu/drm/nouveau/nouveau_drm.c:1215:9: sparse:     expected int ( [usertype] *func )( ... )
   drivers/gpu/drm/nouveau/nouveau_drm.c:1215:9: sparse:     got int ( * )( ... )
   drivers/gpu/drm/nouveau/nouveau_drm.c:1216:9: sparse: sparse: incorrect type in initializer (incompatible argument 2 (different address spaces)) @@     expected int ( [usertype] *func )( ... ) @@     got int ( * )( ... ) @@
   drivers/gpu/drm/nouveau/nouveau_drm.c:1216:9: sparse:     expected int ( [usertype] *func )( ... )
   drivers/gpu/drm/nouveau/nouveau_drm.c:1216:9: sparse:     got int ( * )( ... )
--
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1656:1: sparse: sparse: symbol 'nouveau_uvmm_ioctl_vm_init' redeclared with different type (incompatible argument 2 (different address spaces)):
>> drivers/gpu/drm/nouveau/nouveau_uvmm.c:1656:1: sparse:    int extern [addressable] [signed] [toplevel] nouveau_uvmm_ioctl_vm_init( ... )
   drivers/gpu/drm/nouveau/nouveau_uvmm.c: note: in included file (through drivers/gpu/drm/nouveau/nouveau_drv.h):
   drivers/gpu/drm/nouveau/nouveau_uvmm.h:92:5: sparse: note: previously declared as:
>> drivers/gpu/drm/nouveau/nouveau_uvmm.h:92:5: sparse:    int extern [addressable] [signed] [toplevel] nouveau_uvmm_ioctl_vm_init( ... )
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:283:17: sparse: sparse: context imbalance in '__nouveau_uvma_region_insert' - unexpected unlock
>> drivers/gpu/drm/nouveau/nouveau_uvmm.c:1693:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1694:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1695:20: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1696:20: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1697:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1698:19: sparse: sparse: dereference of noderef expression
   drivers/gpu/drm/nouveau/nouveau_uvmm.c:1701:23: sparse: sparse: dereference of noderef expression

vim +299 drivers/gpu/drm/nouveau/nouveau_exec.c

   293	
   294	static int
   295	nouveau_exec_ucopy(struct nouveau_exec_job_args *args,
   296			   struct drm_nouveau_exec __user *req)
   297	{
   298		struct drm_nouveau_sync **s;
 > 299		u32 inc = req->wait_count;
   300		u64 ins = req->wait_ptr;
   301		u32 outc = req->sig_count;
   302		u64 outs = req->sig_ptr;
   303		u32 pushc = req->push_count;
   304		u64 pushs = req->push_ptr;
   305		int ret;
   306	
   307		if (pushc) {
   308			args->push.count = pushc;
   309			args->push.s = u_memcpya(pushs, pushc, sizeof(*args->push.s));
   310			if (IS_ERR(args->push.s))
   311				return PTR_ERR(args->push.s);
   312		}
   313	
   314		if (inc) {
   315			s = &args->in_sync.s;
   316	
   317			args->in_sync.count = inc;
   318			*s = u_memcpya(ins, inc, sizeof(**s));
   319			if (IS_ERR(*s)) {
   320				ret = PTR_ERR(*s);
   321				goto err_free_pushs;
   322			}
   323		}
   324	
   325		if (outc) {
   326			s = &args->out_sync.s;
   327	
   328			args->out_sync.count = outc;
   329			*s = u_memcpya(outs, outc, sizeof(**s));
   330			if (IS_ERR(*s)) {
   331				ret = PTR_ERR(*s);
   332				goto err_free_ins;
   333			}
   334		}
   335	
   336		return 0;
   337	
   338	err_free_pushs:
   339		u_free(args->push.s);
   340	err_free_ins:
   341		u_free(args->in_sync.s);
   342		return ret;
   343	}
   344	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux