VFIO fixes for v5.13-rc5

- 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)
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEQvbATlQL0amee4qQI5ubbjuwiyIFAmC5DlgbHGFsZXgud2ls
 bGlhbXNvbkByZWRoYXQuY29tAAoJECObm247sIsiDwAP/A8Q8zvrwDOuCBr5hkrc
 kVikIhacn1JaSBktaAgvrhAguaGAl9vJRLaEyB5DKU8FIU9C/qURkdmxldsjSDqd
 F5h8DEg878J2sJoz2zg0vJ8mOBnyl+sP//9+I9NOuLo4+mhpfE9uKSt5f1x9sF0g
 iaAWzV8ssrW1umdNy0v6kMrc2AhyxBo7hoEHZ0+eZcFjiMF6RgtUBVnXWtLcvMqi
 6sBKMl/2PMtfMEQn1Mn2iQ1Liq1dZCmH4mGZJ30bEvJLGH0Z1wb2jnx1llA10ryb
 GS0gVfB7HyhNxHP1Xs4SFYwiu/CHNHXtbfwmBcsfRHFIuE6YS3hF4gwnr7dk2iTD
 YyjkC7miKNzlfR/f4iYURK9p3AWQBXxNr1BuJjTN7NbFiRYtrDGjMaU4JDAjqh7G
 otWb7oHt2uAmTCT/1fN+1+0kBxVfW+NIe0KGBgeW2LMuAOnLvc8MSWz6jj/UOtXb
 vDRTzWdAPATsn4AKzIDfSZ7tscT1mzqPY67osvktlrbl23Mpa2JFcTmAhuCsW4WV
 jMQhueKHa0JiOrspQhmzcKy8EtGvMeCRQ0mgGMzFES+MSvXTwbvECcGoz//0W6Zq
 C4X5xTYjxucaHYYvI3w6eoIEfHPkbWogwQ1IHEHYv1JPTNhxn8Zfpb2Q5OFhGhYI
 sDFZbOh6qeNZSOTsVjm3FA0J
 =yoFF
 -----END PGP SIGNATURE-----

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()
This commit is contained in:
Linus Torvalds 2021-06-03 11:52:24 -07:00
commit f88cd3fb9d
5 changed files with 13 additions and 7 deletions

View File

@ -2,6 +2,7 @@
config VFIO_PCI
tristate "VFIO support for PCI devices"
depends on VFIO && PCI && EVENTFD
depends on MMU
select VFIO_VIRQFD
select IRQ_BYPASS_MANAGER
help

View File

@ -1581,7 +1581,7 @@ static int vfio_ecap_init(struct vfio_pci_device *vdev)
if (len == 0xFF) {
len = vfio_ext_cap_len(vdev, ecap, epos);
if (len < 0)
return ret;
return len;
}
}

View File

@ -291,7 +291,7 @@ err_irq:
vfio_platform_regions_cleanup(vdev);
err_reg:
mutex_unlock(&driver_lock);
module_put(THIS_MODULE);
module_put(vdev->parent_module);
return ret;
}

View File

@ -2795,7 +2795,7 @@ static int vfio_iommu_iova_build_caps(struct vfio_iommu *iommu,
return 0;
}
size = sizeof(*cap_iovas) + (iovas * sizeof(*cap_iovas->iova_ranges));
size = struct_size(cap_iovas, iova_ranges, iovas);
cap_iovas = kzalloc(size, GFP_KERNEL);
if (!cap_iovas)

View File

@ -117,22 +117,27 @@ static int mdpy_fb_probe(struct pci_dev *pdev,
if (format != DRM_FORMAT_XRGB8888) {
pci_err(pdev, "format mismatch (0x%x != 0x%x)\n",
format, DRM_FORMAT_XRGB8888);
return -EINVAL;
ret = -EINVAL;
goto err_release_regions;
}
if (width < 100 || width > 10000) {
pci_err(pdev, "width (%d) out of range\n", width);
return -EINVAL;
ret = -EINVAL;
goto err_release_regions;
}
if (height < 100 || height > 10000) {
pci_err(pdev, "height (%d) out of range\n", height);
return -EINVAL;
ret = -EINVAL;
goto err_release_regions;
}
pci_info(pdev, "mdpy found: %dx%d framebuffer\n",
width, height);
info = framebuffer_alloc(sizeof(struct mdpy_fb_par), &pdev->dev);
if (!info)
if (!info) {
ret = -ENOMEM;
goto err_release_regions;
}
pci_set_drvdata(pdev, info);
par = info->par;