* [android-common:android16-6.12-2025-12 3/3] drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:310:65: sparse: sparse: incorrect type in argument 6 (different address spaces)
@ 2026-02-13 2:56 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-02-13 2:56 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
tree: https://android.googlesource.com/kernel/common android16-6.12-2025-12
head: 1f5755895bc80de88ea2da35d97f935c2f1ad0e8
commit: 206030f6a92bd97997fba8ebb86e78058edecb97 [3/3] staging: vchiq_core: Factor out bulk transfer for blocking mode
config: arm64-randconfig-r121-20260213 (https://download.01.org/0day-ci/archive/20260213/202602131050.fi8DXOr6-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260213/202602131050.fi8DXOr6-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602131050.fi8DXOr6-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:310:65: sparse: sparse: incorrect type in argument 6 (different address spaces) @@ expected void [noderef] __user *userdata @@ got void *[assigned] userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:310:65: sparse: expected void [noderef] __user *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:310:65: sparse: got void *[assigned] userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:338:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *[assigned] userdata @@ got void [noderef] __user *userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:338:26: sparse: expected void *[assigned] userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:338:26: sparse: got void [noderef] __user *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:554:47: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __user *[addressable] [assigned] bulk_userdata @@ got void *bulk_userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:554:47: sparse: expected void [noderef] __user *[addressable] [assigned] bulk_userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:554:47: sparse: got void *bulk_userdata
--
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:972:55: sparse: sparse: incorrect type in argument 6 (different address spaces) @@ expected void [noderef] __user *userdata @@ got struct bulk_waiter * @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:972:55: sparse: expected void [noderef] __user *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:972:55: sparse: got struct bulk_waiter *
--
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c:3130:58: sparse: sparse: incorrect type in argument 5 (different address spaces) @@ expected void *userdata @@ got void [noderef] __user *userdata @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c:3130:58: sparse: expected void *userdata
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c:3130:58: sparse: got void [noderef] __user *userdata
vim +310 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c
283
284 static int vchiq_irq_queue_bulk_tx_rx(struct vchiq_instance *instance,
285 struct vchiq_queue_bulk_transfer *args,
286 enum vchiq_bulk_dir dir,
287 enum vchiq_bulk_mode __user *mode)
288 {
289 struct vchiq_service *service;
290 struct bulk_waiter_node *waiter = NULL, *iter;
291 void *userdata;
292 int status = 0;
293 int ret;
294
295 service = find_service_for_instance(instance, args->handle);
296 if (!service)
297 return -EINVAL;
298
299 if (args->mode == VCHIQ_BULK_MODE_BLOCKING) {
300 waiter = kzalloc(sizeof(*waiter), GFP_KERNEL);
301 if (!waiter) {
302 ret = -ENOMEM;
303 goto out;
304 }
305
306 userdata = &waiter->bulk_waiter;
307
308 status = vchiq_bulk_xfer_blocking_interruptible(instance, args->handle,
309 NULL, args->data, args->size,
> 310 userdata, dir);
311
312 goto bulk_transfer_handled;
313 } else if (args->mode == VCHIQ_BULK_MODE_WAITING) {
314 mutex_lock(&instance->bulk_waiter_list_mutex);
315 list_for_each_entry(iter, &instance->bulk_waiter_list,
316 list) {
317 if (iter->pid == current->pid) {
318 list_del(&iter->list);
319 waiter = iter;
320 break;
321 }
322 }
323 mutex_unlock(&instance->bulk_waiter_list_mutex);
324 if (!waiter) {
325 dev_err(service->state->dev,
326 "arm: no bulk_waiter found for pid %d\n", current->pid);
327 ret = -ESRCH;
328 goto out;
329 }
330 dev_dbg(service->state->dev, "arm: found bulk_waiter %pK for pid %d\n",
331 waiter, current->pid);
332 userdata = &waiter->bulk_waiter;
333
334 status = vchiq_bulk_xfer_waiting_interruptible(instance, args->handle, userdata);
335
336 goto bulk_transfer_handled;
337 } else {
338 userdata = args->userdata;
339 }
340
341 status = vchiq_bulk_transfer(instance, args->handle, NULL, args->data, args->size,
342 userdata, args->mode, dir);
343
344 bulk_transfer_handled:
345 if (!waiter) {
346 ret = 0;
347 goto out;
348 }
349
350 if ((status != -EAGAIN) || fatal_signal_pending(current) ||
351 !waiter->bulk_waiter.bulk) {
352 if (waiter->bulk_waiter.bulk) {
353 /* Cancel the signal when the transfer completes. */
354 spin_lock(&service->state->bulk_waiter_spinlock);
355 waiter->bulk_waiter.bulk->userdata = NULL;
356 spin_unlock(&service->state->bulk_waiter_spinlock);
357 }
358 kfree(waiter);
359 ret = 0;
360 } else {
361 const enum vchiq_bulk_mode mode_waiting =
362 VCHIQ_BULK_MODE_WAITING;
363 waiter->pid = current->pid;
364 mutex_lock(&instance->bulk_waiter_list_mutex);
365 list_add(&waiter->list, &instance->bulk_waiter_list);
366 mutex_unlock(&instance->bulk_waiter_list_mutex);
367 dev_dbg(service->state->dev, "arm: saved bulk_waiter %pK for pid %d\n",
368 waiter, current->pid);
369
370 ret = put_user(mode_waiting, mode);
371 }
372 out:
373 vchiq_service_put(service);
374 if (ret)
375 return ret;
376 else if (status == -EINVAL)
377 return -EIO;
378 else if (status == -EAGAIN)
379 return -EINTR;
380 return 0;
381 }
382
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-02-13 2:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-13 2:56 [android-common:android16-6.12-2025-12 3/3] drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c:310:65: sparse: sparse: incorrect type in argument 6 (different address spaces) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.