From: jiawen <1298662399@qq.com>
jz4780_dma_probe() ignores the return value of clk_prepare_enable(). If
the clock fails to enable, the driver continues and may later attempt to
disable an unprepared clock on error paths, leading to unbalanced clock
operations.
Check the return value and propagate the error immediately, avoiding the
erroneous cleanup.
Signed-off-by: jiawen <1298662399@qq.com>
---
diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -903,7 +903,9 @@
return ret;
}
- clk_prepare_enable(jzdma->clk);
+ ret = clk_prepare_enable(jzdma->clk);
+ if (ret)
+ return ret;
/* Property is optional, if it doesn't exist the value will remain 0. */
of_property_read_u32_index(dev->of_node, "ingenic,reserved-channels",
… > Check the return value and propagate the error immediately, avoiding the > erroneous cleanup. How do you think about to add any tags (like “Fixes” and “Cc”) accordingly? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v7.2#n145 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/stable-kernel-rules.rst?h=v7.2#n34 Regards, Markus
On Tue, Aug 18, 2026 at 04:41:31PM +0400, Jiawen Liu wrote: > From: jiawen <1298662399@qq.com> subject: dmaengine: jz4780: propagate the return value of clk_prepare_enable() in probe Frank > > jz4780_dma_probe() ignores the return value of clk_prepare_enable(). If > the clock fails to enable, the driver continues and may later attempt to > disable an unprepared clock on error paths, leading to unbalanced clock > operations. > > Check the return value and propagate the error immediately, avoiding the > erroneous cleanup. > > Signed-off-by: jiawen <1298662399@qq.com> > --- > diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c > --- a/drivers/dma/dma-jz4780.c > +++ b/drivers/dma/dma-jz4780.c > @@ -903,7 +903,9 @@ > return ret; > } > > - clk_prepare_enable(jzdma->clk); > + ret = clk_prepare_enable(jzdma->clk); > + if (ret) > + return ret; > > /* Property is optional, if it doesn't exist the value will remain 0. */ > of_property_read_u32_index(dev->of_node, "ingenic,reserved-channels", >
© 2016 - 2026 Red Hat, Inc.