Răsfoiți Sursa

intel-iommu: Don't keep freeing page zero in dma_pte_free_pagetable()

Check dma_pte_present() and only free the page if there _is_ one.
Kind of surprising that there was no warning about this.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
David Woodhouse 16 ani în urmă
părinte
comite
6a43e574c5
1 a modificat fișierele cu 4 adăugiri și 2 ștergeri
  1. 4 2
      drivers/pci/intel-iommu.c

+ 4 - 2
drivers/pci/intel-iommu.c

@@ -826,8 +826,10 @@ static void dma_pte_free_pagetable(struct dmar_domain *domain,
 				continue;
 			}
 			do {
-				free_pgtable_page(phys_to_virt(dma_pte_addr(pte)));
-				dma_clear_pte(pte);
+				if (dma_pte_present(pte)) {
+					free_pgtable_page(phys_to_virt(dma_pte_addr(pte)));
+					dma_clear_pte(pte);
+				}
 				pte++;
 				tmp += level_size(level);
 			} while (!first_pte_in_page(pte) &&