media: imx-pxp: Initialize the spinlock prior to using it
authorFabio Estevam <festevam@denx.de>
Fri, 8 Oct 2021 13:10:14 +0000 (15:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:03:19 +0000 (11:03 +0100)
[ Upstream commit ed2f97ad4b21072f849cf4ae6645d1f2b1d3f550 ]

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>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/imx-pxp.c

index 4321edc..8e9c6fe 100644 (file)
@@ -1661,6 +1661,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) {
@@ -1678,8 +1680,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;