vhost_vdpa: return -EFAULT if copy_to_user() fails
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 2 Dec 2020 06:44:43 +0000 (09:44 +0300)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 2 Dec 2020 09:36:40 +0000 (04:36 -0500)
The copy_to_user() function returns the number of bytes remaining to be
copied but this should return -EFAULT to the user.

Fixes: 1b48dc03e575 ("vhost: vdpa: report iova range")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/X8c32z5EtDsMyyIL@mwanda
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
drivers/vhost/vdpa.c

index f2db99031e2f0dc75add7c4466013e22757d3da6..29ed4173f04e6e2a7b1ed450823643c58da8c81d 100644 (file)
@@ -348,7 +348,9 @@ static long vhost_vdpa_get_iova_range(struct vhost_vdpa *v, u32 __user *argp)
                .last = v->range.last,
        };
 
-       return copy_to_user(argp, &range, sizeof(range));
+       if (copy_to_user(argp, &range, sizeof(range)))
+               return -EFAULT;
+       return 0;
 }
 
 static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd,