Message ID | 1477594672-31611-1-git-send-email-festevam@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/27/2016 08:57 PM, Fabio Estevam wrote: > From: Fabio Estevam <fabio.estevam@nxp.com> > > An interrupt may occur right after devm_request_irq() is called and > prior to the spinlock initialization, leading to a kernel oops, > as the interrupt handler uses the spinlock. > > In order to prevent this problem, move the spinlock initialization > prior to requesting the interrupts. > > Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Nice, thanks. Could you also check whether you can disable and clear interrupts in the probe routine ? I think that might make sense too. Reviewed-by: Marek Vasut <marex@denx.de> > --- > drivers/mmc/host/mxs-mmc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c > index d839147..44ecebd 100644 > --- a/drivers/mmc/host/mxs-mmc.c > +++ b/drivers/mmc/host/mxs-mmc.c > @@ -661,13 +661,13 @@ static int mxs_mmc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, mmc); > > + spin_lock_init(&host->lock); > + > ret = devm_request_irq(&pdev->dev, irq_err, mxs_mmc_irq_handler, 0, > dev_name(&pdev->dev), host); > if (ret) > goto out_free_dma; > > - spin_lock_init(&host->lock); > - > ret = mmc_add_host(mmc); > if (ret) > goto out_free_dma; >
Hi Marek, On Thu, Oct 27, 2016 at 5:06 PM, Marek Vasut <marex@denx.de> wrote: > Nice, thanks. > > Could you also check whether you can disable and clear interrupts in the > probe routine ? I think that might make sense too. Yes, that's a good idea. I will look into that after Ulf applies this series. Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/27/2016 09:17 PM, Fabio Estevam wrote: > Hi Marek, > > On Thu, Oct 27, 2016 at 5:06 PM, Marek Vasut <marex@denx.de> wrote: > >> Nice, thanks. >> >> Could you also check whether you can disable and clear interrupts in the >> probe routine ? I think that might make sense too. > > Yes, that's a good idea. I will look into that after Ulf applies this > series. Thanks > Cool, thanks!
Hi Fabio, Am 27.10.2016 um 20:57 schrieb Fabio Estevam: > From: Fabio Estevam <fabio.estevam@nxp.com> > > An interrupt may occur right after devm_request_irq() is called and > prior to the spinlock initialization, leading to a kernel oops, > as the interrupt handler uses the spinlock. > > In order to prevent this problem, move the spinlock initialization > prior to requesting the interrupts. > > Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> this seems to be a bugfix, so please add a fixes tag here. Maybe this could go to stable. Thanks Stefan -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c index d839147..44ecebd 100644 --- a/drivers/mmc/host/mxs-mmc.c +++ b/drivers/mmc/host/mxs-mmc.c @@ -661,13 +661,13 @@ static int mxs_mmc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, mmc); + spin_lock_init(&host->lock); + ret = devm_request_irq(&pdev->dev, irq_err, mxs_mmc_irq_handler, 0, dev_name(&pdev->dev), host); if (ret) goto out_free_dma; - spin_lock_init(&host->lock); - ret = mmc_add_host(mmc); if (ret) goto out_free_dma;