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:
Tim Deegan committed 2011-05-23 18:35:32 +01:00
1 parent 36a72c1e42
commit cd06c7d669
1 file changed
+6
+6
View File
@@ -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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.