mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
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: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
4d0564785b
commit
5570449b68
@ -229,8 +229,6 @@ void *dma_direct_alloc(struct device *dev, size_t size,
|
|||||||
__builtin_return_address(0));
|
__builtin_return_address(0));
|
||||||
if (!ret)
|
if (!ret)
|
||||||
goto out_free_pages;
|
goto out_free_pages;
|
||||||
if (dma_set_decrypted(dev, ret, size))
|
|
||||||
goto out_free_pages;
|
|
||||||
memset(ret, 0, size);
|
memset(ret, 0, size);
|
||||||
goto done;
|
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)))
|
dma_free_from_pool(dev, cpu_addr, PAGE_ALIGN(size)))
|
||||||
return;
|
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);
|
vunmap(cpu_addr);
|
||||||
else if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED))
|
} else {
|
||||||
arch_dma_clear_uncached(cpu_addr, size);
|
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);
|
__dma_direct_free_pages(dev, dma_direct_to_page(dev, dma_addr), size);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user