[PATCH] crypto: omap-aes: fix autosuspend cleanup during teardown

From: Guangshuo Li

Date: Sat Aug 08 2026 - 04:37:22 EST


omap_aes_probe() calls pm_runtime_use_autosuspend(), but neither the
probe failure path nor omap_aes_remove() calls the matching
pm_runtime_dont_use_autosuspend() before disabling runtime PM.

If the autosuspend delay is set to a negative value while autosuspend
is enabled, the runtime PM core increments usage_count to prevent
runtime suspend. Without calling pm_runtime_dont_use_autosuspend()
during teardown, this reference is not dropped and usage_count remains
unbalanced.

Add the missing pm_runtime_dont_use_autosuspend() calls to both the
probe failure and remove paths before disabling runtime PM.

This issue was found by manual code inspection.

Fixes: 5946c4a5e770 ("crypto: omap-aes - Convert to use pm_runtime API")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
---
drivers/crypto/omap-aes.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/crypto/omap-aes.c b/drivers/crypto/omap-aes.c
index f31555c0d715..a6f5a689fbcd 100644
--- a/drivers/crypto/omap-aes.c
+++ b/drivers/crypto/omap-aes.c
@@ -1243,6 +1243,7 @@ static int omap_aes_probe(struct platform_device *pdev)
err_irq:
cancel_work_sync(&dd->done_task);
err_pm_disable:
+ pm_runtime_dont_use_autosuspend(dev);
pm_runtime_disable(dev);
err_res:
dd = NULL;
@@ -1269,6 +1270,7 @@ static void omap_aes_remove(struct platform_device *pdev)

cancel_work_sync(&dd->done_task);
omap_aes_dma_cleanup(dd);
+ pm_runtime_dont_use_autosuspend(dd->dev);
pm_runtime_disable(dd->dev);
}

--
2.43.0