arm64: dma-mapping: always clear allocated buffers
Subsystems (2)
PATCH 1/1 arm64: dma-mapping: always clear allocated buffers
From: Marek Szyprowski <[email protected]>
[Stable backport of 6829e274a623 to 3.14.y]
Buffers allocated by dma_alloc_coherent() are always zeroed on Alpha, ARM (32bit), MIPS, PowerPC, x86/x86_64 and probably other architectures. It turned out that some drivers rely on this 'feature'. Allocated buffer might be also exposed to userspace with dma_mmap() call, so clearing it is desired from security point of view to avoid exposing random memory to userspace. This patch unifies dma_alloc_coherent() behavior on ARM64 architecture with other implementations by unconditionally zeroing allocated buffer.
Cc <[email protected]> # v3.14 only
Signed-off-by Marek Szyprowski <[email protected]>
[will: ported to 3.14.y]
Signed-off-by Will Deacon <[email protected]>
--- arch/arm64/mm/dma-mapping.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/arm64/mm/dma-mapping.c +1 -2
@@ -54,8 +54,7 @@ static void *arm64_swiotlb_alloc_coherent(struct device *dev, size_t size, *dma_handle =phys_to_dma (dev,page_to_phys (page)); addr =page_address (page); -if (flags & __GFP_ZERO) -memset (addr,0 , size); +memset (addr,0 , size);return addr; }else {return swiotlb_alloc_coherent (dev, size, dma_handle, flags);
Signature · 1 line
2.1.4