From: Liu Song <liusong@xxxxxxxxxxxxxxxxx> In "dma_direct_alloc", the allocated memory is explicitly set to 0. If use direct alloc, we need to avoid possible duplicate memset in dma_pool_alloc. Signed-off-by: Liu Song <liusong@xxxxxxxxxxxxxxxxx> --- mm/dmapool.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/dmapool.c b/mm/dmapool.c index a7eb5d0..94f4859 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c @@ -21,6 +21,7 @@ #include <linux/device.h> #include <linux/dma-mapping.h> +#include <linux/dma-map-ops.h> #include <linux/dmapool.h> #include <linux/kernel.h> #include <linux/list.h> @@ -372,7 +373,7 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, #endif spin_unlock_irqrestore(&pool->lock, flags); - if (want_init_on_alloc(mem_flags)) + if (want_init_on_alloc(mem_flags) && get_dma_ops(pool->dev)) memset(retval, 0, pool->size); return retval; -- 1.8.3.1