Message ID | 1478375107-32513-1-git-send-email-festevam@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 5 November 2016 at 20:45, Fabio Estevam <festevam@gmail.com> 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. > > Fixes: e4243f13d10e (mmc: mxs-mmc: add mmc host driver for i.MX23/28) > Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> > Reviewed-by: Marek Vasut <marex@denx.de> Thanks, applied for fixes! Kind regards Uffe > --- > Changes since v2: > - Add a Fixes tag as suggested by Stefan > Changes since v1: > - Make it a standalone patch instead of patch series > - Cc stable as suggested by Stefan > > 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; > -- > 2.7.4 > -- 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;