Re: [PATCH v1] hwrng: imx-rngc: Disable clock on registration failure
Martin Kaiser <[email protected]>
| Newsgroups | org.kernel.vger.linux-crypto,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Thus wrote Yuho Choi ([email protected]): > The RNGC clock is enabled manually before runtime PM is configured. If > devm_hwrng_register() fails, probe returns without disabling the clock. > The devm_pm_runtime_enable() cleanup only disables runtime PM and does not > call imx_rngc_suspend(). > Disable the clock before returning from this failure path. > Fixes: 7a96a64e8689 ("hwrng: imx-rngc - add runtime pm") > Signed-off-by: Yuho Choi <[email protected]> > --- > drivers/char/hw_random/imx-rngc.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > diff --git a/drivers/char/hw_random/imx-rngc.c b/drivers/char/hw_random/imx-rngc.c > index 28c56c2d1bf6..a2db26d7f790 100644 > --- a/drivers/char/hw_random/imx-rngc.c > +++ b/drivers/char/hw_random/imx-rngc.c > @@ -313,8 +313,10 @@ static int __init imx_rngc_probe(struct platform_device *pdev) > devm_pm_runtime_enable(&pdev->dev); > ret = devm_hwrng_register(&pdev->dev, &rngc->rng); > - if (ret) > + if (ret) { > + clk_disable_unprepare(rngc->clk); > return dev_err_probe(&pdev->dev, ret, "hwrng registration failed\n"); > + } > dev_info(&pdev->dev, > "Freescale RNG%c registered (HW revision %d.%02d)\n", > -- > 2.43.0 Good catch, thanks. Reviewed-by: Martin Kaiser <[email protected]>