Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c120143 authored by Zhen Lei's avatar Zhen Lei Committed by Joerg Roedel
Browse files

iommu/amd: make sure TLB to be flushed before IOVA freed



Although the mapping has already been removed in the page table, it maybe
still exist in TLB. Suppose the freed IOVAs is reused by others before the
flush operation completed, the new user can not correctly access to its
meomory.

Signed-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
Fixes: b1516a14 ('iommu/amd: Implement flush queue')
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 4674686d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2407,9 +2407,9 @@ static void __unmap_single(struct dma_ops_domain *dma_dom,
	}

	if (amd_iommu_unmap_flush) {
		dma_ops_free_iova(dma_dom, dma_addr, pages);
		domain_flush_tlb(&dma_dom->domain);
		domain_flush_complete(&dma_dom->domain);
		dma_ops_free_iova(dma_dom, dma_addr, pages);
	} else {
		pages = __roundup_pow_of_two(pages);
		queue_iova(&dma_dom->iovad, dma_addr >> PAGE_SHIFT, pages, 0);