vtd: Fix a missing spin_unlock_irqrestore()
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 4 Aug 2008 10:12:15 +0000 (11:12 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 4 Aug 2008 10:12:15 +0000 (11:12 +0100)
Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
xen/drivers/passthrough/vtd/iommu.c

index 8de32f476bb5c2bb051d3e955ff5b904b69dc508..e573bafd443b8a19388009214331431fc64b3c9a 100644 (file)
@@ -632,7 +632,10 @@ static int iommu_set_root_entry(struct iommu *iommu)
 
     iommu->root_maddr = alloc_pgtable_maddr();
     if ( iommu->root_maddr == 0 )
+    {
+        spin_unlock_irqrestore(&iommu->register_lock, flags);
         return -ENOMEM;
+    }
 
     dmar_writeq(iommu->reg, DMAR_RTADDR_REG, iommu->root_maddr);
     cmd = iommu->gcmd | DMA_GCMD_SRTP;