Patchwork [07/19] rtc: rtc-ps3: remove erroneous __init/__exit annotations

login
register
mail settings
Submitter Jingoo Han
Date Feb. 28, 2013, 8:41 a.m.
Message ID <00ab01ce158f$6434eda0$2c9ec8e0$%han@samsung.com>
Download mbox | patch
Permalink /patch/223822/
State New
Headers show

Comments

Jingoo Han - Feb. 28, 2013, 8:41 a.m.
__init/__exit annotations for probe()/remove() are supposed to be
__devinit/__devexit, because __init/__exit for probe()/remove()
are not correct. However, __devinit/__devexit are not used,
because CONFIG_HOTPLUG was removed. Thus, these annotations
should be removed.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
 drivers/rtc/rtc-ps3.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Geert Uytterhoeven - Feb. 28, 2013, 8:56 a.m.
On Thu, Feb 28, 2013 at 9:41 AM, Jingoo Han <jg1.han@samsung.com> wrote:
> __init/__exit annotations for probe()/remove() are supposed to be
> __devinit/__devexit, because __init/__exit for probe()/remove()
> are not correct. However, __devinit/__devexit are not used,
> because CONFIG_HOTPLUG was removed. Thus, these annotations
> should be removed.

Nack.

This driver does not use platform_driver_register(), but
platform_driver_probe().
Hence the .probe can only be called from platform_driver_probe()
(which is __init),
not at any later time.

I did not check the other drivers you sent patches for.

> Signed-off-by: Jingoo Han <jg1.han@samsung.com>
> ---
>  drivers/rtc/rtc-ps3.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/rtc/rtc-ps3.c b/drivers/rtc/rtc-ps3.c
> index 968133c..8a24d11 100644
> --- a/drivers/rtc/rtc-ps3.c
> +++ b/drivers/rtc/rtc-ps3.c
> @@ -58,7 +58,7 @@ static const struct rtc_class_ops ps3_rtc_ops = {
>         .set_time = ps3_set_time,
>  };
>
> -static int __init ps3_rtc_probe(struct platform_device *dev)
> +static int ps3_rtc_probe(struct platform_device *dev)
>  {
>         struct rtc_device *rtc;
>
> @@ -71,7 +71,7 @@ static int __init ps3_rtc_probe(struct platform_device *dev)
>         return 0;
>  }
>
> -static int __exit ps3_rtc_remove(struct platform_device *dev)
> +static int ps3_rtc_remove(struct platform_device *dev)
>  {
>         rtc_device_unregister(platform_get_drvdata(dev));
>         return 0;
> @@ -82,7 +82,7 @@ static struct platform_driver ps3_rtc_driver = {
>                 .name = "rtc-ps3",
>                 .owner = THIS_MODULE,
>         },
> -       .remove = __exit_p(ps3_rtc_remove),
> +       .remove = ps3_rtc_remove,
>  };
>
>  static int __init ps3_rtc_init(void)

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Jingoo Han - Feb. 28, 2013, 9:36 a.m.
On Thursday, February 28, 2013 5:56 PM, Geert Uytterhoeven wrote:
> 
> On Thu, Feb 28, 2013 at 9:41 AM, Jingoo Han <jg1.han@samsung.com> wrote:
> > __init/__exit annotations for probe()/remove() are supposed to be
> > __devinit/__devexit, because __init/__exit for probe()/remove()
> > are not correct. However, __devinit/__devexit are not used,
> > because CONFIG_HOTPLUG was removed. Thus, these annotations
> > should be removed.
> 
> Nack.
> 
> This driver does not use platform_driver_register(), but
> platform_driver_probe().
> Hence the .probe can only be called from platform_driver_probe()
> (which is __init),
> not at any later time.

Oops, you are right.
In this case, bind/unbind via sysfs is disabled.

Also, other drivers I sent for use platform_driver_probe().
So, my patchset is useless. 

Thank you for your comment :)


Best regards,
Jingoo Han

> 
> I did not check the other drivers you sent patches for.
> 
> > Signed-off-by: Jingoo Han <jg1.han@samsung.com>
> > ---
> >  drivers/rtc/rtc-ps3.c |    6 +++---
> >  1 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/rtc/rtc-ps3.c b/drivers/rtc/rtc-ps3.c
> > index 968133c..8a24d11 100644
> > --- a/drivers/rtc/rtc-ps3.c
> > +++ b/drivers/rtc/rtc-ps3.c
> > @@ -58,7 +58,7 @@ static const struct rtc_class_ops ps3_rtc_ops = {
> >         .set_time = ps3_set_time,
> >  };
> >
> > -static int __init ps3_rtc_probe(struct platform_device *dev)
> > +static int ps3_rtc_probe(struct platform_device *dev)
> >  {
> >         struct rtc_device *rtc;
> >
> > @@ -71,7 +71,7 @@ static int __init ps3_rtc_probe(struct platform_device *dev)
> >         return 0;
> >  }
> >
> > -static int __exit ps3_rtc_remove(struct platform_device *dev)
> > +static int ps3_rtc_remove(struct platform_device *dev)
> >  {
> >         rtc_device_unregister(platform_get_drvdata(dev));
> >         return 0;
> > @@ -82,7 +82,7 @@ static struct platform_driver ps3_rtc_driver = {
> >                 .name = "rtc-ps3",
> >                 .owner = THIS_MODULE,
> >         },
> > -       .remove = __exit_p(ps3_rtc_remove),
> > +       .remove = ps3_rtc_remove,
> >  };
> >
> >  static int __init ps3_rtc_init(void)
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds

Patch

diff --git a/drivers/rtc/rtc-ps3.c b/drivers/rtc/rtc-ps3.c
index 968133c..8a24d11 100644
--- a/drivers/rtc/rtc-ps3.c
+++ b/drivers/rtc/rtc-ps3.c
@@ -58,7 +58,7 @@  static const struct rtc_class_ops ps3_rtc_ops = {
 	.set_time = ps3_set_time,
 };
 
-static int __init ps3_rtc_probe(struct platform_device *dev)
+static int ps3_rtc_probe(struct platform_device *dev)
 {
 	struct rtc_device *rtc;
 
@@ -71,7 +71,7 @@  static int __init ps3_rtc_probe(struct platform_device *dev)
 	return 0;
 }
 
-static int __exit ps3_rtc_remove(struct platform_device *dev)
+static int ps3_rtc_remove(struct platform_device *dev)
 {
 	rtc_device_unregister(platform_get_drvdata(dev));
 	return 0;
@@ -82,7 +82,7 @@  static struct platform_driver ps3_rtc_driver = {
 		.name = "rtc-ps3",
 		.owner = THIS_MODULE,
 	},
-	.remove = __exit_p(ps3_rtc_remove),
+	.remove = ps3_rtc_remove,
 };
 
 static int __init ps3_rtc_init(void)