summaryrefslogtreecommitdiff
path: root/drivers/dma
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2020-01-30 10:08:34 +0300
committerVinod Koul <vkoul@kernel.org>2020-01-30 11:23:53 +0300
commit474809a28e7b0671a5090de6e0db91f0e3821360 (patch)
tree4c2d4f69d9b7ddd968eab27970b393f0fd9ff49b /drivers/dma
parent08607e8319c76a8a37fc2a0ecac328833f4e9f39 (diff)
downloadlinux-474809a28e7b0671a5090de6e0db91f0e3821360.tar.xz
dmaengine: Fix return value for dma_request_chan() in case of failure
Commit 71723a96b8b1 ("dmaengine: Create symlinks between DMA channels and slaves") changed the dma_request_chan() function flow in such a way that it always returns EPROBE_DEFER in case of channels that cannot be found. This break the operation of the devices which have optional DMA channels as it puts their drivers in endless deferred probe loop. Fix this by propagating the proper error value. Fixes: 71723a96b8b1 ("dmaengine: Create symlinks between DMA channels and slaves") Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/r/20200130070834.17537-1-m.szyprowski@samsung.com [vkoul: fix typo in patch title] Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/dmaengine.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index f3ef4edd4de1..7b1cefc3213a 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -759,7 +759,7 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name)
if (!IS_ERR_OR_NULL(chan))
goto found;
- return ERR_PTR(-EPROBE_DEFER);
+ return chan ? chan : ERR_PTR(-EPROBE_DEFER);
found:
chan->slave = dev;