Message ID | 20211007135601.2068291-1-festevam@denx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: imx-pxp: Initialize the spinlock prior to using it | expand |
Hi Fabio, On Thu, 2021-10-07 at 10:56 -0300, Fabio Estevam wrote: > After devm_request_threaded_irq() is called there is a chance that an > interrupt may occur before the spinlock is initialized, which will trigger > a kernel oops. > > To prevent that, move the initialization of the spinlock prior to > requesting the interrupts. > > Fixes: 51abcf7fdb70 ("media: imx-pxp: add i.MX Pixel Pipeline driver") > Signed-off-by: Fabio Estevam <festevam@denx.de> > --- > drivers/media/platform/imx-pxp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/imx-pxp.c b/drivers/media/platform/imx-pxp.c > index acfc77f9d58f..7d1768ec7fcd 100644 > --- a/drivers/media/platform/imx-pxp.c > +++ b/drivers/media/platform/imx-pxp.c > @@ -1693,6 +1693,8 @@ static int pxp_probe(struct platform_device *pdev) > if (irq < 0) > return irq; > > + spin_lock_init(&dev->irqlock); > + > ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, pxp_irq_handler, > IRQF_ONESHOT, dev_name(&pdev->dev), dev); > if (ret < 0) { > @@ -1710,8 +1712,6 @@ static int pxp_probe(struct platform_device *pdev) > goto err_clk; > } > > - spin_lock_init(&dev->irqlock); > - > ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); > if (ret) > goto err_clk; Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> regards Philipp
diff --git a/drivers/media/platform/imx-pxp.c b/drivers/media/platform/imx-pxp.c index acfc77f9d58f..7d1768ec7fcd 100644 --- a/drivers/media/platform/imx-pxp.c +++ b/drivers/media/platform/imx-pxp.c @@ -1693,6 +1693,8 @@ static int pxp_probe(struct platform_device *pdev) if (irq < 0) return irq; + spin_lock_init(&dev->irqlock); + ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, pxp_irq_handler, IRQF_ONESHOT, dev_name(&pdev->dev), dev); if (ret < 0) { @@ -1710,8 +1712,6 @@ static int pxp_probe(struct platform_device *pdev) goto err_clk; } - spin_lock_init(&dev->irqlock); - ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); if (ret) goto err_clk;
After devm_request_threaded_irq() is called there is a chance that an interrupt may occur before the spinlock is initialized, which will trigger a kernel oops. To prevent that, move the initialization of the spinlock prior to requesting the interrupts. Fixes: 51abcf7fdb70 ("media: imx-pxp: add i.MX Pixel Pipeline driver") Signed-off-by: Fabio Estevam <festevam@denx.de> --- drivers/media/platform/imx-pxp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)