* [PATCH 1/2] dmaengine: ti: edma: fix pm_runtime usage counter leak on error
@ 2026-09-23 4:08 phucduc.bui
2026-09-23 4:08 ` [PATCH 2/2] dmaengine: ti: edma: Fix missing pm_runtime cleanup on probe failure phucduc.bui
0 siblings, 1 reply; 2+ messages in thread
From: phucduc.bui @ 2026-09-23 4:08 UTC (permalink / raw)
To: Vignesh Raghavendra, Vinod Koul, Frank Li
Cc: Peter Ujfalusi, Chuhong Yuan, dmaengine, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
pm_runtime_get_sync() leaves the runtime PM usage counter incremented even
when it fails, but the error path in netcp_probe() does not call
pm_runtime_put_noidle() to balance it, leaking a reference each time
resume fails.
Use pm_runtime_resume_and_get() instead, which automatically drops the
usage counter on failure, fixing the leak.
Fixes: 2a03c1314506 ("dmaengine: ti: edma: add missed operations")
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/dma/ti/edma.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/ti/edma.c b/drivers/dma/ti/edma.c
index d97db5af3555..8be9e71dab76 100644
--- a/drivers/dma/ti/edma.c
+++ b/drivers/dma/ti/edma.c
@@ -2345,9 +2345,9 @@ static int edma_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, ecc);
pm_runtime_enable(dev);
- ret = pm_runtime_get_sync(dev);
+ ret = pm_runtime_resume_and_get(dev);
if (ret < 0) {
- dev_err(dev, "pm_runtime_get_sync() failed\n");
+ dev_err(dev, "pm_runtime_resume_and_get() failed\n");
pm_runtime_disable(dev);
return ret;
}
--
2.43.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 2/2] dmaengine: ti: edma: Fix missing pm_runtime cleanup on probe failure
2026-09-23 4:08 [PATCH 1/2] dmaengine: ti: edma: fix pm_runtime usage counter leak on error phucduc.bui
@ 2026-09-23 4:08 ` phucduc.bui
0 siblings, 0 replies; 2+ messages in thread
From: phucduc.bui @ 2026-09-23 4:08 UTC (permalink / raw)
To: Vignesh Raghavendra, Vinod Koul, Frank Li
Cc: Peter Ujfalusi, Chuhong Yuan, dmaengine, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
pm_runtime_get_sync() errors were not checked, so on failure the usage
count leaked and pm_runtime_enable() was never undone, leaving
runtime PM in a half-initialized state after a failed probe.
Switch to pm_runtime_resume_and_get(), which cleans up the usage count
internally on error, and call pm_runtime_disable() to balance the earlier
pm_runtime_enable() on that path.
Fixes: 23f49fd2ea9b ("dmaengine: edma: Remove dynamic TPTC power management feature")
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
drivers/dma/ti/edma.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/ti/edma.c b/drivers/dma/ti/edma.c
index 8be9e71dab76..5254ce7b8514 100644
--- a/drivers/dma/ti/edma.c
+++ b/drivers/dma/ti/edma.c
@@ -2650,8 +2650,16 @@ static struct platform_driver edma_driver = {
static int edma_tptc_probe(struct platform_device *pdev)
{
+ int ret;
+
pm_runtime_enable(&pdev->dev);
- return pm_runtime_get_sync(&pdev->dev);
+ ret = pm_runtime_resume_and_get(&pdev->dev);
+ if (ret < 0) {
+ pm_runtime_disable(&pdev->dev);
+ return ret;
+ }
+
+ return 0;
}
static struct platform_driver edma_tptc_driver = {
--
2.43.0
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-23 4:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-23 4:08 [PATCH 1/2] dmaengine: ti: edma: fix pm_runtime usage counter leak on error phucduc.bui
2026-09-23 4:08 ` [PATCH 2/2] dmaengine: ti: edma: Fix missing pm_runtime cleanup on probe failure phucduc.bui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®