LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 1/4] hwrng: omap - remove incorrect __exit markups
@ 2015-03-09 17:36 Dmitry Torokhov
  2015-03-09 17:36 ` [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods Dmitry Torokhov
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-09 17:36 UTC (permalink / raw)
  To: linux-crypto, Deepak Saxena; +Cc: linux-kernel, Herbert Xu

Even if bus is not hot-pluggable, the devices can be unbound from the
driver via sysfs, so we should not be using __exit annotations on
remove() methods. The only exception is drivers registered with
platform_driver_probe() which specifically disables sysfs bind/unbind
attributes.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/char/hw_random/omap-rng.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
index d14dcf7..7f3597d 100644
--- a/drivers/char/hw_random/omap-rng.c
+++ b/drivers/char/hw_random/omap-rng.c
@@ -408,7 +408,7 @@ err_ioremap:
 	return ret;
 }
 
-static int __exit omap_rng_remove(struct platform_device *pdev)
+static int omap_rng_remove(struct platform_device *pdev)
 {
 	struct omap_rng_dev *priv = platform_get_drvdata(pdev);
 
@@ -460,7 +460,7 @@ static struct platform_driver omap_rng_driver = {
 		.of_match_table = of_match_ptr(omap_rng_of_match),
 	},
 	.probe		= omap_rng_probe,
-	.remove		= __exit_p(omap_rng_remove),
+	.remove		= omap_rng_remove,
 };
 
 module_platform_driver(omap_rng_driver);
-- 
2.2.0.rc0.207.ga3a616c


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods
  2015-03-09 17:36 [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Dmitry Torokhov
@ 2015-03-09 17:36 ` Dmitry Torokhov
  2015-03-11 10:59   ` Herbert Xu
  2015-03-09 17:36 ` [PATCH 3/4] hwrng: octeon - remove incorrect __exit markups Dmitry Torokhov
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-09 17:36 UTC (permalink / raw)
  To: linux-crypto, Deepak Saxena; +Cc: linux-kernel, Herbert Xu

Instead of using #ifdefs let's mark suspend and resume methods as
__maybe_unused which will suppress compiler warnings about them being
unused and provide better compile coverage. This will not increase image
size.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/char/hw_random/omap-rng.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
index 7f3597d..5c171b1 100644
--- a/drivers/char/hw_random/omap-rng.c
+++ b/drivers/char/hw_random/omap-rng.c
@@ -422,9 +422,7 @@ static int omap_rng_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM_SLEEP
-
-static int omap_rng_suspend(struct device *dev)
+static int __maybe_unused omap_rng_suspend(struct device *dev)
 {
 	struct omap_rng_dev *priv = dev_get_drvdata(dev);
 
@@ -434,7 +432,7 @@ static int omap_rng_suspend(struct device *dev)
 	return 0;
 }
 
-static int omap_rng_resume(struct device *dev)
+static int __maybe_unused omap_rng_resume(struct device *dev)
 {
 	struct omap_rng_dev *priv = dev_get_drvdata(dev);
 
@@ -445,18 +443,11 @@ static int omap_rng_resume(struct device *dev)
 }
 
 static SIMPLE_DEV_PM_OPS(omap_rng_pm, omap_rng_suspend, omap_rng_resume);
-#define	OMAP_RNG_PM	(&omap_rng_pm)
-
-#else
-
-#define	OMAP_RNG_PM	NULL
-
-#endif
 
 static struct platform_driver omap_rng_driver = {
 	.driver = {
 		.name		= "omap_rng",
-		.pm		= OMAP_RNG_PM,
+		.pm		= &omap_rng_pm,
 		.of_match_table = of_match_ptr(omap_rng_of_match),
 	},
 	.probe		= omap_rng_probe,
-- 
2.2.0.rc0.207.ga3a616c


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] hwrng: octeon - remove incorrect __exit markups
  2015-03-09 17:36 [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Dmitry Torokhov
  2015-03-09 17:36 ` [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods Dmitry Torokhov
@ 2015-03-09 17:36 ` Dmitry Torokhov
  2015-03-09 17:36 ` [PATCH 4/4] hwrng: pseries-rng - remove incorrect __init/__exit markups Dmitry Torokhov
  2015-03-11 14:13 ` [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Herbert Xu
  3 siblings, 0 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-09 17:36 UTC (permalink / raw)
  To: linux-crypto; +Cc: linux-kernel, Herbert Xu

Even if bus is not hot-pluggable, the devices can be unbound from the
driver via sysfs, so we should not be using __exit annotations on
remove() methods. The only exception is drivers registered with
platform_driver_probe() which specifically disables sysfs bind/unbind
attributes

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/char/hw_random/octeon-rng.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/hw_random/octeon-rng.c b/drivers/char/hw_random/octeon-rng.c
index be1c3f6..6234a4a 100644
--- a/drivers/char/hw_random/octeon-rng.c
+++ b/drivers/char/hw_random/octeon-rng.c
@@ -105,7 +105,7 @@ static int octeon_rng_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int __exit octeon_rng_remove(struct platform_device *pdev)
+static int octeon_rng_remove(struct platform_device *pdev)
 {
 	struct hwrng *rng = platform_get_drvdata(pdev);
 
@@ -119,7 +119,7 @@ static struct platform_driver octeon_rng_driver = {
 		.name		= "octeon_rng",
 	},
 	.probe		= octeon_rng_probe,
-	.remove		= __exit_p(octeon_rng_remove),
+	.remove		= octeon_rng_remove,
 };
 
 module_platform_driver(octeon_rng_driver);
-- 
2.2.0.rc0.207.ga3a616c


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] hwrng: pseries-rng - remove incorrect __init/__exit markups
  2015-03-09 17:36 [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Dmitry Torokhov
  2015-03-09 17:36 ` [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods Dmitry Torokhov
  2015-03-09 17:36 ` [PATCH 3/4] hwrng: octeon - remove incorrect __exit markups Dmitry Torokhov
@ 2015-03-09 17:36 ` Dmitry Torokhov
  2015-03-11 14:13 ` [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Herbert Xu
  3 siblings, 0 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-09 17:36 UTC (permalink / raw)
  To: linux-crypto; +Cc: linux-kernel, Herbert Xu

Even if bus is not hot-pluggable, the devices can be unbound from the
driver via sysfs, so we should not be using __exit annotations on
remove() methods. The only exception is drivers registered with
platform_driver_probe() which specifically disables sysfs bind/unbind
attributes.

Similarly probe() methods should not be marked __init unless
platform_driver_probe() is used.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/char/hw_random/pseries-rng.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/hw_random/pseries-rng.c b/drivers/char/hw_random/pseries-rng.c
index bcf86f9..63ce51d 100644
--- a/drivers/char/hw_random/pseries-rng.c
+++ b/drivers/char/hw_random/pseries-rng.c
@@ -61,13 +61,13 @@ static struct hwrng pseries_rng = {
 	.read		= pseries_rng_read,
 };
 
-static int __init pseries_rng_probe(struct vio_dev *dev,
+static int pseries_rng_probe(struct vio_dev *dev,
 		const struct vio_device_id *id)
 {
 	return hwrng_register(&pseries_rng);
 }
 
-static int __exit pseries_rng_remove(struct vio_dev *dev)
+static int pseries_rng_remove(struct vio_dev *dev)
 {
 	hwrng_unregister(&pseries_rng);
 	return 0;
-- 
2.2.0.rc0.207.ga3a616c


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods
  2015-03-09 17:36 ` [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods Dmitry Torokhov
@ 2015-03-11 10:59   ` Herbert Xu
  2015-03-11 15:44     ` Dmitry Torokhov
  0 siblings, 1 reply; 9+ messages in thread
From: Herbert Xu @ 2015-03-11 10:59 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-crypto, Deepak Saxena, linux-kernel

On Mon, Mar 09, 2015 at 10:36:36AM -0700, Dmitry Torokhov wrote:
> Instead of using #ifdefs let's mark suspend and resume methods as
> __maybe_unused which will suppress compiler warnings about them being
> unused and provide better compile coverage. This will not increase image
> size.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
>  drivers/char/hw_random/omap-rng.c | 15 +++------------
>  1 file changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
> index 7f3597d..5c171b1 100644
> --- a/drivers/char/hw_random/omap-rng.c
> +++ b/drivers/char/hw_random/omap-rng.c
> @@ -422,9 +422,7 @@ static int omap_rng_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM_SLEEP
> -
> -static int omap_rng_suspend(struct device *dev)
> +static int __maybe_unused omap_rng_suspend(struct device *dev)
>  {
>  	struct omap_rng_dev *priv = dev_get_drvdata(dev);
>  
> @@ -434,7 +432,7 @@ static int omap_rng_suspend(struct device *dev)
>  	return 0;
>  }
>  
> -static int omap_rng_resume(struct device *dev)
> +static int __maybe_unused omap_rng_resume(struct device *dev)
>  {
>  	struct omap_rng_dev *priv = dev_get_drvdata(dev);
>  
> @@ -445,18 +443,11 @@ static int omap_rng_resume(struct device *dev)
>  }
>  
>  static SIMPLE_DEV_PM_OPS(omap_rng_pm, omap_rng_suspend, omap_rng_resume);
> -#define	OMAP_RNG_PM	(&omap_rng_pm)
> -
> -#else
> -
> -#define	OMAP_RNG_PM	NULL
> -
> -#endif
>  
>  static struct platform_driver omap_rng_driver = {
>  	.driver = {
>  		.name		= "omap_rng",
> -		.pm		= OMAP_RNG_PM,
> +		.pm		= &omap_rng_pm,

This will cause omap_rng_suspend/omap_rng_resume to be referenced
always, thus rendering the __maybe_unused moot, no?

Cheers,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/4] hwrng: omap - remove incorrect __exit markups
  2015-03-09 17:36 [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Dmitry Torokhov
                   ` (2 preceding siblings ...)
  2015-03-09 17:36 ` [PATCH 4/4] hwrng: pseries-rng - remove incorrect __init/__exit markups Dmitry Torokhov
@ 2015-03-11 14:13 ` Herbert Xu
  3 siblings, 0 replies; 9+ messages in thread
From: Herbert Xu @ 2015-03-11 14:13 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-crypto, Deepak Saxena, linux-kernel

On Mon, Mar 09, 2015 at 10:36:35AM -0700, Dmitry Torokhov wrote:
> Even if bus is not hot-pluggable, the devices can be unbound from the
> driver via sysfs, so we should not be using __exit annotations on
> remove() methods. The only exception is drivers registered with
> platform_driver_probe() which specifically disables sysfs bind/unbind
> attributes.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Patches 1/3/4 applied.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods
  2015-03-11 10:59   ` Herbert Xu
@ 2015-03-11 15:44     ` Dmitry Torokhov
  2015-03-11 21:00       ` Herbert Xu
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-11 15:44 UTC (permalink / raw)
  To: Herbert Xu; +Cc: linux-crypto, Deepak Saxena, linux-kernel

Hi Herbert,

On Wed, Mar 11, 2015 at 09:59:57PM +1100, Herbert Xu wrote:
> On Mon, Mar 09, 2015 at 10:36:36AM -0700, Dmitry Torokhov wrote:
> > Instead of using #ifdefs let's mark suspend and resume methods as
> > __maybe_unused which will suppress compiler warnings about them being
> > unused and provide better compile coverage. This will not increase image
> > size.
> > 
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > ---
> >  drivers/char/hw_random/omap-rng.c | 15 +++------------
> >  1 file changed, 3 insertions(+), 12 deletions(-)
> > 
> > diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
> > index 7f3597d..5c171b1 100644
> > --- a/drivers/char/hw_random/omap-rng.c
> > +++ b/drivers/char/hw_random/omap-rng.c
> > @@ -422,9 +422,7 @@ static int omap_rng_remove(struct platform_device *pdev)
> >  	return 0;
> >  }
> >  
> > -#ifdef CONFIG_PM_SLEEP
> > -
> > -static int omap_rng_suspend(struct device *dev)
> > +static int __maybe_unused omap_rng_suspend(struct device *dev)
> >  {
> >  	struct omap_rng_dev *priv = dev_get_drvdata(dev);
> >  
> > @@ -434,7 +432,7 @@ static int omap_rng_suspend(struct device *dev)
> >  	return 0;
> >  }
> >  
> > -static int omap_rng_resume(struct device *dev)
> > +static int __maybe_unused omap_rng_resume(struct device *dev)
> >  {
> >  	struct omap_rng_dev *priv = dev_get_drvdata(dev);
> >  
> > @@ -445,18 +443,11 @@ static int omap_rng_resume(struct device *dev)
> >  }
> >  
> >  static SIMPLE_DEV_PM_OPS(omap_rng_pm, omap_rng_suspend, omap_rng_resume);
> > -#define	OMAP_RNG_PM	(&omap_rng_pm)
> > -
> > -#else
> > -
> > -#define	OMAP_RNG_PM	NULL
> > -
> > -#endif
> >  
> >  static struct platform_driver omap_rng_driver = {
> >  	.driver = {
> >  		.name		= "omap_rng",
> > -		.pm		= OMAP_RNG_PM,
> > +		.pm		= &omap_rng_pm,
> 
> This will cause omap_rng_suspend/omap_rng_resume to be referenced
> always, thus rendering the __maybe_unused moot, no?

SIMPLE_DEV_PM_OPS() produces an empty omap_rng_pm structure in case of
!CONFIG_PM_SLEEP so neither omap_rng_suspend nor omap_rng_resume will
end up being referenced.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods
  2015-03-11 15:44     ` Dmitry Torokhov
@ 2015-03-11 21:00       ` Herbert Xu
  2015-03-11 21:08         ` Dmitry Torokhov
  0 siblings, 1 reply; 9+ messages in thread
From: Herbert Xu @ 2015-03-11 21:00 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-crypto, Deepak Saxena, linux-kernel

On Wed, Mar 11, 2015 at 08:44:07AM -0700, Dmitry Torokhov wrote:
> 
> SIMPLE_DEV_PM_OPS() produces an empty omap_rng_pm structure in case of
> !CONFIG_PM_SLEEP so neither omap_rng_suspend nor omap_rng_resume will
> end up being referenced.

OK, could you please resend this patch?

Thanks,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods
  2015-03-11 21:00       ` Herbert Xu
@ 2015-03-11 21:08         ` Dmitry Torokhov
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Torokhov @ 2015-03-11 21:08 UTC (permalink / raw)
  To: Herbert Xu; +Cc: linux-crypto, Deepak Saxena, linux-kernel

On Thu, Mar 12, 2015 at 08:00:35AM +1100, Herbert Xu wrote:
> On Wed, Mar 11, 2015 at 08:44:07AM -0700, Dmitry Torokhov wrote:
> > 
> > SIMPLE_DEV_PM_OPS() produces an empty omap_rng_pm structure in case of
> > !CONFIG_PM_SLEEP so neither omap_rng_suspend nor omap_rng_resume will
> > end up being referenced.
> 
> OK, could you please resend this patch?

Done.

Thanks!

-- 
Dmitry

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-03-11 21:09 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-09 17:36 [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Dmitry Torokhov
2015-03-09 17:36 ` [PATCH 2/4] hwrng: omap - remove #ifdefery around PM methods Dmitry Torokhov
2015-03-11 10:59   ` Herbert Xu
2015-03-11 15:44     ` Dmitry Torokhov
2015-03-11 21:00       ` Herbert Xu
2015-03-11 21:08         ` Dmitry Torokhov
2015-03-09 17:36 ` [PATCH 3/4] hwrng: octeon - remove incorrect __exit markups Dmitry Torokhov
2015-03-09 17:36 ` [PATCH 4/4] hwrng: pseries-rng - remove incorrect __init/__exit markups Dmitry Torokhov
2015-03-11 14:13 ` [PATCH 1/4] hwrng: omap - remove incorrect __exit markups Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).