diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index b486b8bbd1fc..207241a553b9 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -379,10 +379,14 @@ EXPORT_SYMBOL_GPL(iommu_device_register_bus); int iommu_mock_device_add(struct device *dev, struct iommu_device *iommu) { + bool dev_iommu_present; int rc; mutex_lock(&iommu_probe_device_lock); + dev_iommu_present = dev->iommu; rc = iommu_fwspec_init(dev, iommu->fwnode); + if (rc && !dev_iommu_present && dev->iommu) + dev_iommu_free(dev); mutex_unlock(&iommu_probe_device_lock); if (rc)