History

Merge tag 'vfio-v5.13-rc5' of git://github.com/awilliam/linux-vfio

Pull VFIO fixes from Alex Williamson: - Fix error path return value (Zhen Lei) - Add vfio-pci CONFIG_MMU dependency (Randy Dunlap) - Replace open coding with struct_size() (Gustavo A. R. Silva) - Fix sample driver error path (Wei Yongjun) - Fix vfio-platform error path module_put() (Max Gurtovoy) * tag 'vfio-v5.13-rc5' of git://github.com/awilliam/linux-vfio: vfio/platform: fix module_put call in error flow samples: vfio-mdev: fix error handing in mdpy_fb_probe() vfio/iommu_type1: Use struct_size() for kzalloc() vfio/pci: zap_vma_ptes() needs MMU vfio/pci: Fix error return code in vfio_ecap_init()

Linus Torvalds committed 5 years ago

Commit f88cd3f2 parents 143d28d dc51ff95 files · +13 −7Browse files

Unified · Split

5 files
  1. drivers/vfio/pci/Kconfig +1 −0
  2. drivers/vfio/pci/vfio_pci_config.c +1 −1
  3. drivers/vfio/platform/vfio_platform_common.c +1 −1
  4. drivers/vfio/vfio_iommu_type1.c +1 −1
  5. samples/vfio-mdev/mdpy-fb.c +9 −4
drivers/vfio/pci/Kconfig+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
2config VFIO_PCI2config VFIO_PCI
3 tristate "VFIO support for PCI devices"3 tristate "VFIO support for PCI devices"
4 depends on VFIO && PCI && EVENTFD4 depends on VFIO && PCI && EVENTFD
5 depends on MMU
5 select VFIO_VIRQFD6 select VFIO_VIRQFD
6 select IRQ_BYPASS_MANAGER7 select IRQ_BYPASS_MANAGER
7 help8 help
drivers/vfio/pci/vfio_pci_config.c+1−1
@@ -1581,7 +1581,7 @@ static int vfio_ecap_init(struct vfio_pci_device *vdev) · 1580 unmodified lines
1581 if (len == 0xFF) {1581 if (len == 0xFF) {
1582 len = vfio_ext_cap_len(vdev, ecap, epos);1582 len = vfio_ext_cap_len(vdev, ecap, epos);
1583 if (len < 0)1583 if (len < 0)
1584 return ret;1584 return len;
1585 }1585 }
1586 }1586 }
1587 1587
drivers/vfio/platform/vfio_platform_common.c+1−1
@@ -291,7 +291,7 @@ err_irq: · 290 unmodified lines
291 vfio_platform_regions_cleanup(vdev);291 vfio_platform_regions_cleanup(vdev);
292err_reg:292err_reg:
293 mutex_unlock(&driver_lock);293 mutex_unlock(&driver_lock);
294 module_put(THIS_MODULE);294 module_put(vdev->parent_module);
295 return ret;295 return ret;
296}296}
297 297
drivers/vfio/vfio_iommu_type1.c+1−1
@@ -2795,7 +2795,7 @@ static int vfio_iommu_iova_build_caps(struct vfio_iommu *iommu, · 2794 unmodified lines
2795 return 0;2795 return 0;
2796 }2796 }
2797 2797
2798 size = sizeof(*cap_iovas) + (iovas * sizeof(*cap_iovas->iova_ranges));2798 size = struct_size(cap_iovas, iova_ranges, iovas);
2799 2799
2800 cap_iovas = kzalloc(size, GFP_KERNEL);2800 cap_iovas = kzalloc(size, GFP_KERNEL);
2801 if (!cap_iovas)2801 if (!cap_iovas)
samples/vfio-mdev/mdpy-fb.c+9−4
@@ -117,22 +117,27 @@ static int mdpy_fb_probe(struct pci_dev *pdev, · 116 unmodified lines
117 if (format != DRM_FORMAT_XRGB8888) {117 if (format != DRM_FORMAT_XRGB8888) {
118 pci_err(pdev, "format mismatch (0x%x != 0x%x)\n",118 pci_err(pdev, "format mismatch (0x%x != 0x%x)\n",
119 format, DRM_FORMAT_XRGB8888);119 format, DRM_FORMAT_XRGB8888);
120 return -EINVAL;120 ret = -EINVAL;
121 goto err_release_regions;
121 }122 }
122 if (width < 100 || width > 10000) {123 if (width < 100 || width > 10000) {
123 pci_err(pdev, "width (%d) out of range\n", width);124 pci_err(pdev, "width (%d) out of range\n", width);
124 return -EINVAL;125 ret = -EINVAL;
126 goto err_release_regions;
125 }127 }
126 if (height < 100 || height > 10000) {128 if (height < 100 || height > 10000) {
127 pci_err(pdev, "height (%d) out of range\n", height);129 pci_err(pdev, "height (%d) out of range\n", height);
128 return -EINVAL;130 ret = -EINVAL;
131 goto err_release_regions;
129 }132 }
130 pci_info(pdev, "mdpy found: %dx%d framebuffer\n",133 pci_info(pdev, "mdpy found: %dx%d framebuffer\n",
131 width, height);134 width, height);
132 135
133 info = framebuffer_alloc(sizeof(struct mdpy_fb_par), &pdev->dev);136 info = framebuffer_alloc(sizeof(struct mdpy_fb_par), &pdev->dev);
134 if (!info)137 if (!info) {
138 ret = -ENOMEM;
135 goto err_release_regions;139 goto err_release_regions;
140 }
136 pci_set_drvdata(pdev, info);141 pci_set_drvdata(pdev, info);
137 par = info->par;142 par = info->par;
138 143