Commit 5570449b authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

dma-direct: don't call dma_set_decrypted for remapped allocations



Remapped allocations handle the encrypted bit through the pgprot passed
to vmap, so there is no call dma_set_decrypted.  Note that this case is
currently entirely theoretical as no valid kernel configuration supports
remapped allocations and memory encryption currently.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 4d056478
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -229,8 +229,6 @@ void *dma_direct_alloc(struct device *dev, size_t size,
				__builtin_return_address(0));
		if (!ret)
			goto out_free_pages;
		if (dma_set_decrypted(dev, ret, size))
			goto out_free_pages;
		memset(ret, 0, size);
		goto done;
	}
@@ -304,12 +302,13 @@ void dma_direct_free(struct device *dev, size_t size,
	    dma_free_from_pool(dev, cpu_addr, PAGE_ALIGN(size)))
		return;

	dma_set_encrypted(dev, cpu_addr, 1 << page_order);

	if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr))
	if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) {
		vunmap(cpu_addr);
	else if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED))
	} else {
		if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED))
			arch_dma_clear_uncached(cpu_addr, size);
		dma_set_encrypted(dev, cpu_addr, 1 << page_order);
	}

	__dma_direct_free_pages(dev, dma_direct_to_page(dev, dma_addr), size);
}