From: Christoph Hellwig Date: Tue, 9 Nov 2021 14:47:56 +0000 (+0100) Subject: dma-direct: fail allocations that can't be made coherent X-Git-Tag: v6.1-rc5~2255^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=955f58f7406ad912825fc344c7825fd904b124a0;p=platform%2Fkernel%2Flinux-starfive.git dma-direct: fail allocations that can't be made coherent If the architecture can't remap or set an address uncached there is no way to fullfill a request for a coherent allocation. Return NULL in that case. Note that this case currently does not happen, so this is a theoretical fixup and/or a preparation for eventually supporting platforms that can't support coherent allocations with the generic code. Signed-off-by: Christoph Hellwig Reviewed-by: Robin Murphy --- diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index f9658fe..a130176 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -233,8 +233,9 @@ void *dma_direct_alloc(struct device *dev, size_t size, return dma_direct_alloc_from_pool(dev, size, dma_handle, gfp); } else { - if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED)) - set_uncached = true; + if (!IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED)) + return NULL; + set_uncached = true; } }