diff options
Diffstat (limited to 'drivers/pci/intel-iommu.c')
-rw-r--r-- | drivers/pci/intel-iommu.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index e6fe1994f9d3..4eaec2fa1369 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -3561,10 +3561,13 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain, | |||
3561 | domain_update_iommu_cap(domain); | 3561 | domain_update_iommu_cap(domain); |
3562 | spin_unlock_irqrestore(&domain->iommu_lock, tmp_flags); | 3562 | spin_unlock_irqrestore(&domain->iommu_lock, tmp_flags); |
3563 | 3563 | ||
3564 | spin_lock_irqsave(&iommu->lock, tmp_flags); | 3564 | if (!(domain->flags & DOMAIN_FLAG_VIRTUAL_MACHINE) && |
3565 | clear_bit(domain->id, iommu->domain_ids); | 3565 | !(domain->flags & DOMAIN_FLAG_STATIC_IDENTITY)) { |
3566 | iommu->domains[domain->id] = NULL; | 3566 | spin_lock_irqsave(&iommu->lock, tmp_flags); |
3567 | spin_unlock_irqrestore(&iommu->lock, tmp_flags); | 3567 | clear_bit(domain->id, iommu->domain_ids); |
3568 | iommu->domains[domain->id] = NULL; | ||
3569 | spin_unlock_irqrestore(&iommu->lock, tmp_flags); | ||
3570 | } | ||
3568 | } | 3571 | } |
3569 | 3572 | ||
3570 | spin_unlock_irqrestore(&device_domain_lock, flags); | 3573 | spin_unlock_irqrestore(&device_domain_lock, flags); |