All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Martin Kaiser <martin@kaiser.cx>,
	David Woodhouse <dwmw2@infradead.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mtd: rawnand: mxc: remove __init qualifier from mxcnd_probe_dt
Date: Tue, 26 Jun 2018 09:24:13 +0200	[thread overview]
Message-ID: <20180626092413.703249c8@bbrezillon> (raw)
In-Reply-To: <20180626091005.08d56b2a@xps13>

On Tue, 26 Jun 2018 09:10:05 +0200
Miquel Raynal <miquel.raynal@bootlin.com> wrote:

> Hi Martin, Boris,
> 
> On Fri, 22 Jun 2018 16:50:25 +0200, Martin Kaiser <martin@kaiser.cx>
> wrote:
> 
> > mxcnd_probe_dt is called from mxcnd_probe, which is not marked as __init.
> >   
> 
> I think this line is just a side note and should be at the end of the
> commit log.
> 
> > Using the sysfs unbind, bind nodes, mxcnd_probe and mxcnd_probe_dt can
> > potentially be called at any time. After the __init functions are cleaned,
> > mxcnd_probe_dt is no longer available. Calling it anyway causes a crash.  
> 
> The above paragraph explains the problem and the solution, you can just
> add something like "mcvnd_probe is untouched because it is already not
> marked as __init" instead of the first line.
> 
> > 
> > Signed-off-by: Martin Kaiser <martin@kaiser.cx>  
> 
> Boris, do you think this patch is a good candidate for stable?
> 
> If yes, Martin, could you please add a couple of stable/fixes tags above
> your SoB?

We should at least have a Fixes tag. For the stable one, I'm not so
sure because the bug does not exist in practice (the compiler always
inline mxcnd_probe_dt()).

> 
> Thanks,
> Miquèl
> 
> > ---
> > I hope that my understanding is correct.
> > 
> > In practice, I could not get the kernel to crash, my compiler would
> > inline mxcnd_probe_dt into mxcnd_probe and ignore the __init.
> > 
> > If I marked mxcnd_probe_dt as noinline, I could trigger a crash as
> > follows
> > 
> > [root@host ]# echo bb000000.nand > /sys/bus/platform/drivers/mxc_nand/unbind
> > [root@host ]# echo bb000000.nand > /sys/bus/platform/drivers/mxc_nand/bind
> > Internal error: Oops - undefined instruction: 0 [#1] ARM
> > ...
> > 
> >  drivers/mtd/nand/raw/mxc_nand.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/mtd/nand/raw/mxc_nand.c b/drivers/mtd/nand/raw/mxc_nand.c
> > index 26cef21..90cfb5e 100644
> > --- a/drivers/mtd/nand/raw/mxc_nand.c
> > +++ b/drivers/mtd/nand/raw/mxc_nand.c
> > @@ -1686,7 +1686,7 @@ static const struct of_device_id mxcnd_dt_ids[] = {
> >  };
> >  MODULE_DEVICE_TABLE(of, mxcnd_dt_ids);
> >  
> > -static int __init mxcnd_probe_dt(struct mxc_nand_host *host)
> > +static int mxcnd_probe_dt(struct mxc_nand_host *host)
> >  {
> >  	struct device_node *np = host->dev->of_node;
> >  	const struct of_device_id *of_id =
> > @@ -1700,7 +1700,7 @@ static int __init mxcnd_probe_dt(struct mxc_nand_host *host)
> >  	return 0;
> >  }
> >  #else
> > -static int __init mxcnd_probe_dt(struct mxc_nand_host *host)
> > +static int mxcnd_probe_dt(struct mxc_nand_host *host)
> >  {
> >  	return 1;
> >  }  

  reply	other threads:[~2018-06-26  7:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-22 14:50 [PATCH] mtd: rawnand: mxc: remove __init qualifier from mxcnd_probe_dt Martin Kaiser
2018-06-26  7:10 ` Miquel Raynal
2018-06-26  7:24   ` Boris Brezillon [this message]
2018-06-26  7:36     ` Miquel Raynal
2018-06-27  8:55       ` Martin Kaiser
2018-06-27  8:52 ` [PATCH v2] " Martin Kaiser
2018-06-27  9:01   ` Miquel Raynal
2018-06-27 20:47 ` [PATCH v3] " Martin Kaiser
2018-06-27 21:35   ` Boris Brezillon
2018-07-01 18:12   ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180626092413.703249c8@bbrezillon \
    --to=boris.brezillon@bootlin.com \
    --cc=dwmw2@infradead.org \
    --cc=fabio.estevam@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=martin@kaiser.cx \
    --cc=miquel.raynal@bootlin.com \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.