mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
drivers/passthrough: fix error paths in pci_add_device*()
When a device can't be allocated to dom0 by the IOMMU, don't leave dom0 in the "domain" field. It causes pci_remove_device() to crash trying to remove the dev from the domain's list of devices (and was probably the wrong thing to do anyway). Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
This commit is contained in:
1 parent
36a72c1e42
commit
cd06c7d669
1 file changed
+6
@@ -158,7 +158,10 @@ int pci_add_device(u8 bus, u8 devfn)
|
||||
pdev->domain = dom0;
|
||||
ret = iommu_add_device(pdev);
|
||||
if ( ret )
|
||||
{
|
||||
pdev->domain = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
list_add(&pdev->domain_list, &dom0->arch.pdev_list);
|
||||
pci_enable_acs(pdev);
|
||||
@@ -222,7 +225,10 @@ int pci_add_device_ext(u8 bus, u8 devfn, struct pci_dev_info *info)
|
||||
pdev->domain = dom0;
|
||||
ret = iommu_add_device(pdev);
|
||||
if ( ret )
|
||||
{
|
||||
pdev->domain = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
list_add(&pdev->domain_list, &dom0->arch.pdev_list);
|
||||
pci_enable_acs(pdev);
|
||||
|
||||