]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/iommu/intel-iommu.c
iommu/vt-d: fix memory leakage caused by commit ea8ea46
[karo-tx-linux.git] / drivers / iommu / intel-iommu.c
index 69fa7da5e48beba40a9595f67117505efc4e069b..13dc2318e17a3af7d5887b7b2e719c8ae483087f 100644 (file)
@@ -1009,11 +1009,13 @@ static struct page *dma_pte_list_pagetables(struct dmar_domain *domain,
        if (level == 1)
                return freelist;
 
-       for (pte = page_address(pg); !first_pte_in_page(pte); pte++) {
+       pte = page_address(pg);
+       do {
                if (dma_pte_present(pte) && !dma_pte_superpage(pte))
                        freelist = dma_pte_list_pagetables(domain, level - 1,
                                                           pte, freelist);
-       }
+               pte++;
+       } while (!first_pte_in_page(pte));
 
        return freelist;
 }