This patch fixes the following sparse warnings by adding missing __user annotations. It also cleans up two related unnecessary casts by reuseing casts already made a few lines up. Remaining sparse warnings are of a different type. vchiq_arm.c:1606:14: warning: incorrect type in assignment (different address spaces) vchiq_arm.c:1606:14: expected struct vchiq_queue_message *args vchiq_arm.c:1606:14: got void [noderef] <asn:1> * vchiq_arm.c:1612:13: warning: incorrect type in argument 1 (different address spaces) vchiq_arm.c:1612:13: expected void const volatile [noderef] <asn:1> * vchiq_arm.c:1612:13: got unsigned int * vchiq_arm.c:1613:13: warning: incorrect type in argument 1 (different address spaces) vchiq_arm.c:1613:13: expected void const volatile [noderef] <asn:1> * vchiq_arm.c:1613:13: got unsigned int * vchiq_arm.c:1614:13: warning: incorrect type in argument 1 (different address spaces) vchiq_arm.c:1614:13: expected void const volatile [noderef] <asn:1> * vchiq_arm.c:1614:13: got struct vchiq_element const [noderef] <asn:1> ** vchiq_arm.c:1638:21: warning: incorrect type in argument 1 (different address spaces) vchiq_arm.c:1638:21: expected void const volatile [noderef] <asn:1> * vchiq_arm.c:1638:21: got struct vchiq_element const [noderef] <asn:1> ** Signed-off-by: Jasminko Dedic <betelge@xxxxxxxxx> --- .../vc04_services/interface/vchiq_arm/vchiq_arm.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 804daf83be35..1ca1c37a7e6e 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -1540,9 +1540,7 @@ vchiq_compat_ioctl_create_service( if (!args) return -EFAULT; - if (copy_from_user(&args32, - (struct vchiq_create_service32 __user *)arg, - sizeof(args32))) + if (copy_from_user(&args32, ptrargs32, sizeof(args32))) return -EFAULT; if (put_user(args32.params.fourcc, &args->params.fourcc) || @@ -1593,7 +1591,7 @@ vchiq_compat_ioctl_queue_message(struct file *file, unsigned int cmd, unsigned long arg) { - struct vchiq_queue_message *args; + struct vchiq_queue_message __user *args; struct vchiq_element __user *elements; struct vchiq_queue_message32 args32; unsigned int count; @@ -1662,17 +1660,15 @@ vchiq_compat_ioctl_queue_bulk(struct file *file, { struct vchiq_queue_bulk_transfer __user *args; struct vchiq_queue_bulk_transfer32 args32; - struct vchiq_queue_bulk_transfer32 *ptrargs32 = - (struct vchiq_queue_bulk_transfer32 *)arg; + struct vchiq_queue_bulk_transfer32 __user *ptrargs32 = + (struct vchiq_queue_bulk_transfer32 __user *)arg; long ret; args = compat_alloc_user_space(sizeof(*args)); if (!args) return -EFAULT; - if (copy_from_user(&args32, - (struct vchiq_queue_bulk_transfer32 __user *)arg, - sizeof(args32))) + if (copy_from_user(&args32, ptrargs32, sizeof(args32))) return -EFAULT; if (put_user(args32.handle, &args->handle) || -- 2.17.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel