vfio/pci: Make vfio_pci_regops->rw() return ssize_t
authorYishai Hadas <yishaih@nvidia.com>
Wed, 21 Jul 2021 13:05:48 +0000 (10:05 -0300)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 2 Aug 2021 21:23:42 +0000 (15:23 -0600)
The only implementation of this in IGD returns a -ERRNO which is
implicitly cast through a size_t and then casted again and returned as a
ssize_t in vfio_pci_rw().

Fix the vfio_pci_regops->rw() return type to be ssize_t so all is
consistent.

Fixes: 28541d41c9e0 ("vfio/pci: Add infrastructure for additional device specific regions")
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
Link: https://lore.kernel.org/r/0-v3-5db12d1bf576+c910-vfio_rw_jgg@nvidia.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci_igd.c
drivers/vfio/pci/vfio_pci_private.h

index 228df56..aa0a29f 100644 (file)
@@ -25,8 +25,8 @@
 #define OPREGION_RVDS          0x3c2
 #define OPREGION_VERSION       0x16
 
-static size_t vfio_pci_igd_rw(struct vfio_pci_device *vdev, char __user *buf,
-                             size_t count, loff_t *ppos, bool iswrite)
+static ssize_t vfio_pci_igd_rw(struct vfio_pci_device *vdev, char __user *buf,
+                              size_t count, loff_t *ppos, bool iswrite)
 {
        unsigned int i = VFIO_PCI_OFFSET_TO_INDEX(*ppos) - VFIO_PCI_NUM_REGIONS;
        void *base = vdev->region[i].data;
@@ -160,9 +160,9 @@ static int vfio_pci_igd_opregion_init(struct vfio_pci_device *vdev)
        return ret;
 }
 
-static size_t vfio_pci_igd_cfg_rw(struct vfio_pci_device *vdev,
-                                 char __user *buf, size_t count, loff_t *ppos,
-                                 bool iswrite)
+static ssize_t vfio_pci_igd_cfg_rw(struct vfio_pci_device *vdev,
+                                  char __user *buf, size_t count, loff_t *ppos,
+                                  bool iswrite)
 {
        unsigned int i = VFIO_PCI_OFFSET_TO_INDEX(*ppos) - VFIO_PCI_NUM_REGIONS;
        struct pci_dev *pdev = vdev->region[i].data;
index 5a36272..bbc56c8 100644 (file)
@@ -56,7 +56,7 @@ struct vfio_pci_device;
 struct vfio_pci_region;
 
 struct vfio_pci_regops {
-       size_t  (*rw)(struct vfio_pci_device *vdev, char __user *buf,
+       ssize_t (*rw)(struct vfio_pci_device *vdev, char __user *buf,
                      size_t count, loff_t *ppos, bool iswrite);
        void    (*release)(struct vfio_pci_device *vdev,
                           struct vfio_pci_region *region);