2020-01-28 11:44:16

by Martin Kaiser

[permalink] [raw]
Subject: [PATCH 3/6] hwrng: imx-rngc - use devres for registration

Use devres to register the rngc with the hwrng core. Drop the explicit
deregistration.

Signed-off-by: Martin Kaiser <[email protected]>
---
drivers/char/hw_random/imx-rngc.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/char/hw_random/imx-rngc.c b/drivers/char/hw_random/imx-rngc.c
index 903894518c8d..1381ddd5b891 100644
--- a/drivers/char/hw_random/imx-rngc.c
+++ b/drivers/char/hw_random/imx-rngc.c
@@ -263,7 +263,7 @@ static int imx_rngc_probe(struct platform_device *pdev)
}
}

- ret = hwrng_register(&rngc->rng);
+ ret = devm_hwrng_register(&pdev->dev, &rngc->rng);
if (ret) {
dev_err(&pdev->dev, "FSL RNGC registering failed (%d)\n", ret);
goto err;
@@ -282,8 +282,6 @@ static int __exit imx_rngc_remove(struct platform_device *pdev)
{
struct imx_rngc *rngc = platform_get_drvdata(pdev);

- hwrng_unregister(&rngc->rng);
-
clk_disable_unprepare(rngc->clk);

return 0;
--
2.20.1


Subject: Re: [PATCH 3/6] hwrng: imx-rngc - use devres for registration

Hi Martin,

On Tue, 28 Jan 2020 at 16:31, Martin Kaiser <[email protected]> wrote:
>
> Use devres to register the rngc with the hwrng core. Drop the explicit
> deregistration.
>
> Signed-off-by: Martin Kaiser <[email protected]>
> ---
> drivers/char/hw_random/imx-rngc.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/char/hw_random/imx-rngc.c b/drivers/char/hw_random/imx-rngc.c
> index 903894518c8d..1381ddd5b891 100644
> --- a/drivers/char/hw_random/imx-rngc.c
> +++ b/drivers/char/hw_random/imx-rngc.c
> @@ -263,7 +263,7 @@ static int imx_rngc_probe(struct platform_device *pdev)
> }
> }
>
> - ret = hwrng_register(&rngc->rng);
> + ret = devm_hwrng_register(&pdev->dev, &rngc->rng);
> if (ret) {
> dev_err(&pdev->dev, "FSL RNGC registering failed (%d)\n", ret);
> goto err;
> @@ -282,8 +282,6 @@ static int __exit imx_rngc_remove(struct platform_device *pdev)
> {
> struct imx_rngc *rngc = platform_get_drvdata(pdev);
>
> - hwrng_unregister(&rngc->rng);
> -
> clk_disable_unprepare(rngc->clk);
>
> return 0;
> --
> 2.20.1
>

After imx_rngc_remove function hwrng_unregister will get called. This
leaves a window where the clock to rng hardware block is disabled but
still user space can access it via /dev/hwrng. This does not look
right, please revisit the patch.

Regards,
PrasannaKumar