Re: is dma_mapping_error() check necessary for dma_alloc_noncoherent()?

From: Christoph Hellwig
Date: Wed Aug 27 2025 - 03:31:25 EST


On Tue, Aug 26, 2025 at 05:44:42PM +0800, Baochen Qiang wrote:
> Checking code gives me the impression that I should do dma_mapping_error() check as well.
> And indeed with below diff the warning is gone:
>
> + dma_mapping_error(ab->dev, paddr);
>
> However this does not make sense to me since IMO testing the CPU address is good enough, I
> can not imagine a valid case where DMA alloc/map fails while returning a valid CPU
> address, no?

Yes, this doesn't make sense. dma_mapping_error exists to provide a
error handling path for dma_map_*, which return the dma address only.

For the dma_alloc_* interfaces that return a pointer and can signal
with a NULL return it should not be needed and dma-debug needs to
be fixed.

> If I was right, should we remove invocation to debug_dma_map_page() in dma_alloc_pages()?
>

That allocation still needs to be tracked, so it can't just be removed
but needs to be changed to record the kind of allocation.