diff options
author | Michael Walle <michael@walle.cc> | 2022-05-26 15:51:11 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2022-07-05 14:48:31 +0200 |
commit | 3770d92bd5237d686e49da7b2fb86f53ee6ed259 (patch) | |
tree | ea9d36abe5ef5e4add845125d126cf088a9582a5 /drivers/dma/at_xdmac.c | |
parent | dmaengine: imx-sdma: only restart cyclic channel when enabled (diff) | |
download | linux-3770d92bd5237d686e49da7b2fb86f53ee6ed259.tar.xz linux-3770d92bd5237d686e49da7b2fb86f53ee6ed259.zip |
dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly
It seems that it is valid to have less than the requested number of
descriptors. But what is not valid and leads to subsequent errors is to
have zero descriptors. In that case, abort the probing.
Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: Michael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20220526135111.1470926-1-michael@walle.cc
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/at_xdmac.c')
-rw-r--r-- | drivers/dma/at_xdmac.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index 3e9d726504e2..7b3e6030f7b4 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c @@ -1900,6 +1900,11 @@ static int at_xdmac_alloc_chan_resources(struct dma_chan *chan) for (i = 0; i < init_nr_desc_per_channel; i++) { desc = at_xdmac_alloc_desc(chan, GFP_KERNEL); if (!desc) { + if (i == 0) { + dev_warn(chan2dev(chan), + "can't allocate any descriptors\n"); + return -EIO; + } dev_warn(chan2dev(chan), "only %d descriptors have been allocated\n", i); break; |