vfio/pci: return -EFAULT if copy_to_user fails
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 25 Feb 2016 07:52:12 +0000 (10:52 +0300)
committerAlex Williamson <alex.williamson@redhat.com>
Fri, 26 Feb 2016 04:48:42 +0000 (21:48 -0700)
The copy_to_user() function returns the number of bytes that were not
copied but we want to return -EFAULT on error here.

Fixes: 188ad9d6cbbc ('vfio/pci: Include sparse mmap capability for MSI-X table regions')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci.c

index 1ce1d364308c1795bc634a074e7b2d89ec3fd76c..98059df9cff6bd94a015f1f47e3941fbf16775da 100644 (file)
@@ -664,12 +664,11 @@ static long vfio_pci_ioctl(void *device_data,
                                info.cap_offset = 0;
                        } else {
                                vfio_info_cap_shift(&caps, sizeof(info));
-                               ret = copy_to_user((void __user *)arg +
-                                                  sizeof(info), caps.buf,
-                                                  caps.size);
-                               if (ret) {
+                               if (copy_to_user((void __user *)arg +
+                                                 sizeof(info), caps.buf,
+                                                 caps.size)) {
                                        kfree(caps.buf);
-                                       return ret;
+                                       return -EFAULT;
                                }
                                info.cap_offset = sizeof(info);
                        }