[PATCH] hwrng: cctrng: fix usage_count leak when autosuspend_delay is negative
Guangshuo Li <[email protected]>
| Newsgroups | org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
cc_trng_pm_init() calls pm_runtime_use_autosuspend(), but
cc_trng_pm_fini() does not call 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() call before disabling
runtime PM.
This issue was found by manual code inspection.
Fixes: a583ed310bb6 ("hwrng: cctrng - introduce Arm CryptoCell driver")
Cc: [email protected]
Signed-off-by: Guangshuo Li <[email protected]>
---
drivers/char/hw_random/cctrng.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/char/hw_random/cctrng.c b/drivers/char/hw_random/cctrng.c
index a5be9258037f..bed4b9876d09 100644
--- a/drivers/char/hw_random/cctrng.c
+++ b/drivers/char/hw_random/cctrng.c
@@ -126,6 +126,7 @@ static void cc_trng_pm_fini(struct cctrng_drvdata *drvdata)
{
struct device *dev = &(drvdata->pdev->dev);
+ pm_runtime_dont_use_autosuspend(dev);
pm_runtime_disable(dev);
}
--
2.43.0