]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
intel-iommu: Fix use after release during device attach
authorJan Kiszka <jan.kiszka@siemens.com>
Tue, 2 Nov 2010 07:05:51 +0000 (08:05 +0100)
committerAndi Kleen <ak@linux.intel.com>
Thu, 28 Apr 2011 15:21:15 +0000 (08:21 -0700)
upstream commit 7a6610139a

Obtain the new pgd pointer before releasing the page containing this
value.

Cc: stable@kernel.org
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/pci/intel-iommu.c

index 83ac0a08f701f12fa05685102335e364df29cd9f..46fcc591d5ed9497ccd24d8e651bbed29fb566c0 100644 (file)
@@ -3638,9 +3638,9 @@ static int intel_iommu_attach_device(struct iommu_domain *domain,
 
                pte = dmar_domain->pgd;
                if (dma_pte_present(pte)) {
-                       free_pgtable_page(dmar_domain->pgd);
                        dmar_domain->pgd = (struct dma_pte *)
                                phys_to_virt(dma_pte_addr(pte));
+                       free_pgtable_page(pte);
                }
                dmar_domain->agaw--;
        }