aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2010-11-02 03:05:51 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2011-01-17 11:21:42 -0500
commit7a6610139a1e1d9297dd1c5d178022eac36839cb (patch)
tree48ffd3762fa1961bfce3001f3783091e29142a58 /drivers
parente78bf5e6cbe837daa6ab628a5f679548742994d3 (diff)
intel-iommu: Fix use after release during device attach
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> Reviewed-by: Sheng Yang <sheng@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/intel-iommu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 4789f8e8bf7a..35463ddf10a1 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -3627,9 +3627,9 @@ static int intel_iommu_attach_device(struct iommu_domain *domain,
3627 3627
3628 pte = dmar_domain->pgd; 3628 pte = dmar_domain->pgd;
3629 if (dma_pte_present(pte)) { 3629 if (dma_pte_present(pte)) {
3630 free_pgtable_page(dmar_domain->pgd);
3631 dmar_domain->pgd = (struct dma_pte *) 3630 dmar_domain->pgd = (struct dma_pte *)
3632 phys_to_virt(dma_pte_addr(pte)); 3631 phys_to_virt(dma_pte_addr(pte));
3632 free_pgtable_page(pte);
3633 } 3633 }
3634 dmar_domain->agaw--; 3634 dmar_domain->agaw--;
3635 } 3635 }