linux/kernel/dma
Shanker Donthineni 7623279377 dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted
commit 89a2d212bd upstream.

When CONFIG_DMA_DIRECT_REMAP is enabled, atomic pool pages are
remapped via dma_common_contiguous_remap() using the supplied
pgprot. Currently, the mapping uses
pgprot_dmacoherent(PAGE_KERNEL), which leaves the memory encrypted
on systems with memory encryption enabled (e.g., ARM CCA Realms).

This can cause the DMA layer to fail or crash when accessing the
memory, as the underlying physical pages are not configured as
expected.

Fix this by requesting a decrypted mapping in the vmap() call:
pgprot_decrypted(pgprot_dmacoherent(PAGE_KERNEL))

This ensures that atomic pool memory is consistently mapped
unencrypted.

Cc: stable@vger.kernel.org
Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20250811181759.998805-1-sdonthineni@nvidia.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-09-04 15:26:30 +02:00
..
coherent.c dma-mapping: clear dev->dma_mem to NULL after freeing it 2024-01-25 15:27:28 -08:00
contiguous.c dma/contiguous: avoid warning about unused size_bytes 2025-05-02 07:46:53 +02:00
debug.c dma-debug: fix a possible deadlock on radix_lock 2024-12-14 19:54:43 +01:00
debug.h dma-debug: teach add_dma_entry() about DMA_ATTR_SKIP_CPU_SYNC 2021-10-18 12:46:45 +02:00
direct.c dma-direct: Leak pages on dma_set_decrypted() failure 2024-04-13 13:04:59 +02:00
direct.h dma-direct: support PCI P2PDMA pages in dma-direct map_sg 2022-07-26 07:27:47 -04:00
dummy.c dma-mapping: return error code from dma_dummy_map_sg() 2021-08-09 17:13:06 +02:00
Kconfig dma-mapping: remove CONFIG_DMA_REMAP 2022-03-03 14:00:57 +03:00
Makefile dma-mapping: remove CONFIG_DMA_REMAP 2022-03-03 14:00:57 +03:00
map_benchmark.c dma-mapping: benchmark: Don't starve others when doing the test 2024-09-12 11:10:23 +02:00
mapping.c dma: fix call order in dmam_free_coherent 2024-08-03 08:49:49 +02:00
ops_helpers.c dma-mapping: handle vmalloc addresses in dma_common_{mmap,get_sgtable} 2021-07-16 11:30:26 +02:00
pool.c dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted 2025-09-04 15:26:30 +02:00
remap.c dma-remap: use kvmalloc_array/kvfree for larger dma memory remap 2023-08-23 17:52:21 +02:00
swiotlb.c swiotlb: Fix alignment checks when both allocation and DMA masks are present 2024-04-03 15:19:44 +02:00