[02/29] pxa3xx_nand: fix compile warning

Submitted by Haojian Zhuang on July 28, 2010, 5:56 a.m.

Details

Message ID AANLkTimJbfRUwzRUT0Z6_eMOm-SpYeti-FjY-eE5a7cV@mail.gmail.com
State New, archived
Headers show

Commit Message

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(-)

Comments

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 hide | download patch | download mbox

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;