Re: [PATCH] crypto: stm32/cryp: fix autosuspend cleanup during teardown
Maxime MERE <[email protected]>
| Newsgroups | org.kernel.vger.linux-crypto,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On 8/8/26 11:36, Guangshuo Li wrote:
> stm32_cryp_probe() calls pm_runtime_use_autosuspend(), but neither the
> probe failure path nor stm32_cryp_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: 65f9aa36ee47 ("crypto: stm32/cryp - Add power management support")
> Cc: [email protected]
> Signed-off-by: Guangshuo Li <[email protected]>
> ---
> drivers/crypto/stm32/stm32-cryp.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/crypto/stm32/stm32-cryp.c b/drivers/crypto/stm32/stm32-cryp.c
> index b79877099942..74f6e329b1fa 100644
> --- a/drivers/crypto/stm32/stm32-cryp.c
> +++ b/drivers/crypto/stm32/stm32-cryp.c
> @@ -2691,6 +2691,7 @@ static int stm32_cryp_probe(struct platform_device *pdev)
> dma_release_channel(cryp->dma_lch_out);
> err_dma:
> err_rst:
> + pm_runtime_dont_use_autosuspend(dev);
> pm_runtime_disable(dev);
> pm_runtime_put_noidle(dev);
>
> @@ -2722,6 +2723,7 @@ static void stm32_cryp_remove(struct platform_device *pdev)
> if (cryp->dma_lch_out)
> dma_release_channel(cryp->dma_lch_out);
>
> + pm_runtime_dont_use_autosuspend(cryp->dev);
> pm_runtime_disable(cryp->dev);
> pm_runtime_put_noidle(cryp->dev);
>
Reviewed-by: Maxime Méré <[email protected]>
Cheers,
Maxime