Patchwork [02/29] pxa3xx_nand: fix compile warning

login
register
mail settings
Submitter Haojian Zhuang
Date July 28, 2010, 5:56 a.m.
Message ID <AANLkTimJbfRUwzRUT0Z6_eMOm-SpYeti-FjY-eE5a7cV@mail.gmail.com>
Download mbox | patch
Permalink /patch/60088/
State New
Headers show

Comments

Haojian Zhuang - July 28, 2010, 5:56 a.m.
From c374a3f27c56f9112b97960eaa3194a08db6f4a4 Mon Sep 17 00:00:00 2001
From: Lei Wen <leiwen@marvell.com>
Date: Tue, 22 Jun 2010 20:19:35 +0800
Subject: [PATCH 02/29] pxa3xx_nand: fix compile warning

The compile output as below:
WARNING: modpost: Found 1 section mismatch(es).

Signed-off-by: Lei Wen <leiwen@marvell.com>
---
 drivers/mtd/nand/pxa3xx_nand.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Eric Miao - July 28, 2010, 6:17 a.m.
On Wed, Jul 28, 2010 at 1:56 PM, Haojian Zhuang
<haojian.zhuang@gmail.com> wrote:
> From c374a3f27c56f9112b97960eaa3194a08db6f4a4 Mon Sep 17 00:00:00 2001
> From: Lei Wen <leiwen@marvell.com>
> Date: Tue, 22 Jun 2010 20:19:35 +0800
> Subject: [PATCH 02/29] pxa3xx_nand: fix compile warning
>
> The compile output as below:
> WARNING: modpost: Found 1 section mismatch(es).
>
> Signed-off-by: Lei Wen <leiwen@marvell.com>
> ---
>  drivers/mtd/nand/pxa3xx_nand.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index 3ffcbcd..52cec28 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -1069,7 +1069,7 @@ static void pxa3xx_nand_init_mtd(struct mtd_info *mtd,
>        this->chip_delay = 25;
>  }
>
> -static int pxa3xx_nand_probe(struct platform_device *pdev)
> +static int __devinit pxa3xx_nand_probe(struct platform_device *pdev)

Ack

>  {
>        struct pxa3xx_nand_platform_data *pdata;
>        struct pxa3xx_nand_info *info;
> --
> 1.7.0.4
>
Russell King - ARM Linux - July 28, 2010, 7:23 a.m.
On Wed, Jul 28, 2010 at 02:17:23PM +0800, Eric Miao wrote:
> On Wed, Jul 28, 2010 at 1:56 PM, Haojian Zhuang
> <haojian.zhuang@gmail.com> wrote:
> > From c374a3f27c56f9112b97960eaa3194a08db6f4a4 Mon Sep 17 00:00:00 2001
> > From: Lei Wen <leiwen@marvell.com>
> > Date: Tue, 22 Jun 2010 20:19:35 +0800
> > Subject: [PATCH 02/29] pxa3xx_nand: fix compile warning
> >
> > The compile output as below:
> > WARNING: modpost: Found 1 section mismatch(es).
> >
> > Signed-off-by: Lei Wen <leiwen@marvell.com>
> > ---
> >  drivers/mtd/nand/pxa3xx_nand.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> > index 3ffcbcd..52cec28 100644
> > --- a/drivers/mtd/nand/pxa3xx_nand.c
> > +++ b/drivers/mtd/nand/pxa3xx_nand.c
> > @@ -1069,7 +1069,7 @@ static void pxa3xx_nand_init_mtd(struct mtd_info *mtd,
> >        this->chip_delay = 25;
> >  }
> >
> > -static int pxa3xx_nand_probe(struct platform_device *pdev)
> > +static int __devinit pxa3xx_nand_probe(struct platform_device *pdev)
> 
> Ack

__devinit is not always the right thing for this.  Not having any
attribute is the safest thing.  Having any kind of init tag means
that there's a circumstance when the function will be freed, and
if the function pointer is called...
Eric Miao - July 28, 2010, 7:38 a.m.
On Wed, Jul 28, 2010 at 3:23 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Wed, Jul 28, 2010 at 02:17:23PM +0800, Eric Miao wrote:
>> On Wed, Jul 28, 2010 at 1:56 PM, Haojian Zhuang
>> <haojian.zhuang@gmail.com> wrote:
>> > From c374a3f27c56f9112b97960eaa3194a08db6f4a4 Mon Sep 17 00:00:00 2001
>> > From: Lei Wen <leiwen@marvell.com>
>> > Date: Tue, 22 Jun 2010 20:19:35 +0800
>> > Subject: [PATCH 02/29] pxa3xx_nand: fix compile warning
>> >
>> > The compile output as below:
>> > WARNING: modpost: Found 1 section mismatch(es).
>> >
>> > Signed-off-by: Lei Wen <leiwen@marvell.com>
>> > ---
>> >  drivers/mtd/nand/pxa3xx_nand.c |    2 +-
>> >  1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
>> > index 3ffcbcd..52cec28 100644
>> > --- a/drivers/mtd/nand/pxa3xx_nand.c
>> > +++ b/drivers/mtd/nand/pxa3xx_nand.c
>> > @@ -1069,7 +1069,7 @@ static void pxa3xx_nand_init_mtd(struct mtd_info *mtd,
>> >        this->chip_delay = 25;
>> >  }
>> >
>> > -static int pxa3xx_nand_probe(struct platform_device *pdev)
>> > +static int __devinit pxa3xx_nand_probe(struct platform_device *pdev)
>>
>> Ack
>
> __devinit is not always the right thing for this.  Not having any
> attribute is the safest thing.  Having any kind of init tag means
> that there's a circumstance when the function will be freed, and
> if the function pointer is called...
>

Should be quite safe if all the NAND devices are registered during
the initcall phase, which is normally true. Yet indeed will create
problems if they are registered later, e.g. in modules.

Patch

diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 3ffcbcd..52cec28 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -1069,7 +1069,7 @@  static void pxa3xx_nand_init_mtd(struct mtd_info *mtd,
 	this->chip_delay = 25;
 }

-static int pxa3xx_nand_probe(struct platform_device *pdev)
+static int __devinit pxa3xx_nand_probe(struct platform_device *pdev)
 {
 	struct pxa3xx_nand_platform_data *pdata;
 	struct pxa3xx_nand_info *info;