浏览代码

ARM: dma-mapping: free allocated page if unable to map

If the attempt to map a page for DMA fails (eg, because we're out of
mapping space) then we must not hold on to the page we allocated for
DMA - doing so will result in a memory leak.

Cc: <stable@kernel.org>
Reported-by: Bryan Phillippe <bp@darkforest.org>
Tested-by: Bryan Phillippe <bp@darkforest.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 13 年之前
父节点
当前提交
d8e89b47e0
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      arch/arm/mm/dma-mapping.c

+ 2 - 0
arch/arm/mm/dma-mapping.c

@@ -324,6 +324,8 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
 
 
 	if (addr)
 	if (addr)
 		*handle = pfn_to_dma(dev, page_to_pfn(page));
 		*handle = pfn_to_dma(dev, page_to_pfn(page));
+	else
+		__dma_free_buffer(page, size);
 
 
 	return addr;
 	return addr;
 }
 }