Thread (16 messages) 16 messages, 3 authors, 2016-09-08

Re: [PATCH 4/9] hwrng: omap - Use the managed device resource API for registration

From: PrasannaKumar Muralidharan <hidden>
Date: 2016-09-07 14:45:24

On 7 September 2016 at 19:53, Romain Perier
[off-list ref] wrote:
Hello,


Le 06/09/2016 18:31, PrasannaKumar Muralidharan a écrit :
quoted
quoted
Use devm_hwrng_register instead of hwrng_register. It avoids the need
to handle unregistration explicitly from the remove function.

Signed-off-by: Romain Perier <redacted>
---
  drivers/char/hw_random/omap-rng.c | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/char/hw_random/omap-rng.c
b/drivers/char/hw_random/omap-rng.c
index d47b24d..171c3e8 100644
--- a/drivers/char/hw_random/omap-rng.c
+++ b/drivers/char/hw_random/omap-rng.c
@@ -381,7 +381,7 @@ static int omap_rng_probe(struct platform_device
*pdev)
         if (ret)
                 goto err_ioremap;

-       ret = hwrng_register(&omap_rng_ops);
+       ret = devm_hwrng_register(dev, &omap_rng_ops);
         if (ret)
                 goto err_register;
@@ -402,8 +402,6 @@ static int omap_rng_remove(struct platform_device
*pdev)
  {
         struct omap_rng_dev *priv = platform_get_drvdata(pdev);

-       hwrng_unregister(&omap_rng_ops);
-
         priv->pdata->cleanup(priv);

         pm_runtime_put_sync(&pdev->dev);
--

If devm_hwrng_register is used hwrng_unregister will be called after
pm_runtime_disable is called. If RNG device is in use calling
omap_rng_remove may not work properly.
The case where the remove function is called is if you unbind the driver by
hand or you call rmmod while the RNG device is used.
I don't think that the kernel will call platform->remove is the device is in
use (so /dev/hwrng). I mean the argument that the unregister function is
called after pm_runtime_disable is correct, but I don't think that the
remove function might be called while the device is in use. There is
necessarily a mutual exclusive case between "use the device" and "call the
remove function of the device". However, I am open to suggestions.
The way you explained is good :D. Good point too. But the device is
created by hw_random core (hwrng_modinit in core.c) so the device can
be in use when omap-rng module is removed. Please feel free to correct
me if I am wrong.

Cheers,
PrasannaKumar
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help