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

From: Guangshuo Li

Date: Sat Aug 08 2026 - 04:47:54 EST


omap_des_probe() calls pm_runtime_use_autosuspend(), but neither the
probe failure path nor omap_des_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: 418f2a8cf2eb ("crypto: omap-des - use runtime_pm autosuspend for clock handling")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
---
drivers/crypto/omap-des.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/crypto/omap-des.c b/drivers/crypto/omap-des.c
index dfaf831dd8ec..73425c06597a 100644
--- a/drivers/crypto/omap-des.c
+++ b/drivers/crypto/omap-des.c
@@ -1066,6 +1066,7 @@ static int omap_des_probe(struct platform_device *pdev)
err_irq:
cancel_work_sync(&dd->done_task);
err_get:
+ pm_runtime_dont_use_autosuspend(dev);
pm_runtime_disable(dev);
err_res:
dd = NULL;
@@ -1086,6 +1087,7 @@ static void omap_des_remove(struct platform_device *pdev)

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

--
2.43.0