drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 2 (different address spaces)
From: kernel test robot
Date: Sun Dec 08 2024 - 23:06:13 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: b5f217084ab3ddd4bdd03cd437f8e3b7e2d1f5b6
commit: cdf02fe1a94a768cbcd20f5c4e1a1d805f4a06c0 drm/xe/oa/uapi: Add/remove OA config perf ops
date: 6 months ago
config: s390-randconfig-r112-20241207 (https://download.01.org/0day-ci/archive/20241207/202412071146.uzl1t7vz-lkp@xxxxxxxxx/config)
compiler: s390-linux-gcc (GCC) 14.2.0
reproduce: (https://download.01.org/0day-ci/archive/20241207/202412071146.uzl1t7vz-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/202412071146.uzl1t7vz-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
drivers/gpu/drm/xe/xe_oa.c:388:25: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected unsigned long long [usertype] *ptr @@ got void [noderef] __user * @@
drivers/gpu/drm/xe/xe_oa.c:388:25: sparse: expected unsigned long long [usertype] *ptr
drivers/gpu/drm/xe/xe_oa.c:388:25: sparse: got void [noderef] __user *
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned long long [usertype] *ptr @@
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: got unsigned long long [usertype] *ptr
>> drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *ptr @@ got unsigned long long [usertype] *ptr @@
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: expected void const [noderef] __user *ptr
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: got unsigned long long [usertype] *ptr
>> drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *ptr @@ got unsigned long long [usertype] *ptr @@
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: expected void const [noderef] __user *ptr
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: got unsigned long long [usertype] *ptr
>> drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *ptr @@ got unsigned long long [usertype] *ptr @@
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: expected void const [noderef] __user *ptr
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: got unsigned long long [usertype] *ptr
>> drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *ptr @@ got unsigned long long [usertype] *ptr @@
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: expected void const [noderef] __user *ptr
drivers/gpu/drm/xe/xe_oa.c:401:15: sparse: got unsigned long long [usertype] *ptr
vim +401 drivers/gpu/drm/xe/xe_oa.c
377
378 /**
379 * xe_oa_remove_config_ioctl - Removes one OA config
380 * @dev: @drm_device
381 * @data: pointer to struct @drm_xe_perf_param
382 * @file: @drm_file
383 */
384 int xe_oa_remove_config_ioctl(struct drm_device *dev, u64 data, struct drm_file *file)
385 {
386 struct xe_oa *oa = &to_xe_device(dev)->oa;
387 struct xe_oa_config *oa_config;
> 388 u64 arg, *ptr = u64_to_user_ptr(data);
389 int ret;
390
391 if (!oa->xe) {
392 drm_dbg(&oa->xe->drm, "xe oa interface not available for this system\n");
393 return -ENODEV;
394 }
395
396 if (xe_perf_stream_paranoid && !perfmon_capable()) {
397 drm_dbg(&oa->xe->drm, "Insufficient privileges to remove xe OA config\n");
398 return -EACCES;
399 }
400
> 401 ret = get_user(arg, ptr);
402 if (XE_IOCTL_DBG(oa->xe, ret))
403 return ret;
404
405 ret = mutex_lock_interruptible(&oa->metrics_lock);
406 if (ret)
407 return ret;
408
409 oa_config = idr_find(&oa->metrics_idr, arg);
410 if (!oa_config) {
411 drm_dbg(&oa->xe->drm, "Failed to remove unknown OA config\n");
412 ret = -ENOENT;
413 goto err_unlock;
414 }
415
416 WARN_ON(arg != oa_config->id);
417
418 sysfs_remove_group(oa->metrics_kobj, &oa_config->sysfs_metric);
419 idr_remove(&oa->metrics_idr, arg);
420
421 mutex_unlock(&oa->metrics_lock);
422
423 drm_dbg(&oa->xe->drm, "Removed config %s id=%i\n", oa_config->uuid, oa_config->id);
424
425 xe_oa_config_put(oa_config);
426
427 return 0;
428
429 err_unlock:
430 mutex_unlock(&oa->metrics_lock);
431 return ret;
432 }
433
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki