|
@@ -917,7 +917,7 @@ static void dma_pte_free_level(struct dmar_domain *domain, int level,
|
|
|
|
|
|
/* If range covers entire pagetable, free it */
|
|
/* If range covers entire pagetable, free it */
|
|
if (!(start_pfn > level_pfn ||
|
|
if (!(start_pfn > level_pfn ||
|
|
- last_pfn < level_pfn + level_size(level))) {
|
|
|
|
|
|
+ last_pfn < level_pfn + level_size(level) - 1)) {
|
|
dma_clear_pte(pte);
|
|
dma_clear_pte(pte);
|
|
domain_flush_cache(domain, pte, sizeof(*pte));
|
|
domain_flush_cache(domain, pte, sizeof(*pte));
|
|
free_pgtable_page(level_pte);
|
|
free_pgtable_page(level_pte);
|