summaryrefslogtreecommitdiff
path: root/drivers/dma
diff options
context:
space:
mode:
authorMichael Walle <michael@walle.cc>2022-05-26 16:51:11 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-07-12 17:29:04 +0300
commitb33cae9975550f0c442dbad71eaa196db5493deb (patch)
treef7a3e813b70b06b85d78f9dc6d04bf81d3df5b07 /drivers/dma
parentb7bfa6497a11948fe62f8c6fc296cc618c63f8e4 (diff)
downloadlinux-b33cae9975550f0c442dbad71eaa196db5493deb.tar.xz
dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly
commit 3770d92bd5237d686e49da7b2fb86f53ee6ed259 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/at_xdmac.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
index d4ba0d9dd17c..a451ecae1669 100644
--- a/drivers/dma/at_xdmac.c
+++ b/drivers/dma/at_xdmac.c
@@ -1804,6 +1804,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_ATOMIC);
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;