diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index dd76f6e85db3..7d1a39d51966 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -858,9 +858,10 @@ static void __arm_dma_free(struct device *dev, size_t size, void *cpu_addr, .page = page, .want_vaddr = ((attrs & DMA_ATTR_NO_KERNEL_MAPPING) == 0), }; + void *addr = (args.want_vaddr) ? cpu_addr : page; - buf = arm_dma_buffer_find(cpu_addr); - if (WARN(!buf, "Freeing invalid buffer %p\n", cpu_addr)) + buf = arm_dma_buffer_find(addr); + if (WARN(!buf, "Freeing invalid buffer %pK\n", addr)) return; buf->allocator->free(&args);