+10
-3
drivers/iommu/intel-iommu.c
+10
-3
drivers/iommu/intel-iommu.c
···
5624
5624
5625
5625
group = iommu_group_get_for_dev(dev);
5626
5626
5627
-
if (IS_ERR(group))
5628
-
return PTR_ERR(group);
5627
+
if (IS_ERR(group)) {
5628
+
ret = PTR_ERR(group);
5629
+
goto unlink;
5630
+
}
5629
5631
5630
5632
iommu_group_put(group);
5631
5633
···
5653
5651
if (!get_private_domain_for_dev(dev)) {
5654
5652
dev_warn(dev,
5655
5653
"Failed to get a private domain.\n");
5656
-
return -ENOMEM;
5654
+
ret = -ENOMEM;
5655
+
goto unlink;
5657
5656
}
5658
5657
5659
5658
dev_info(dev,
···
5669
5666
}
5670
5667
5671
5668
return 0;
5669
+
5670
+
unlink:
5671
+
iommu_device_unlink(&iommu->iommu, dev);
5672
+
return ret;
5672
5673
}
5673
5674
5674
5675
static void intel_iommu_remove_device(struct device *dev)