]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe
authorZhang Shurong <zhang_shurong@foxmail.com>
Sat, 15 Jul 2023 08:16:56 +0000 (16:16 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Aug 2023 09:33:49 +0000 (11:33 +0200)
[ Upstream commit 4e88761f5f8c7869f15a2046b1a1116f4fab4ac8 ]

This func misses checking for platform_get_irq()'s call and may passes the
negative error codes to request_irq(), which takes unsigned IRQ #,
causing it to fail with -EINVAL, overriding an original error code.

Fix this by stop calling request_irq() with invalid IRQ #s.

Fixes: 1630d85a8312 ("au1200fb: fix hardcoded IRQ")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/video/fbdev/au1200fb.c

index e17a083f849adb9754499339eeda4f1e64047982..cae4a04cba48e33114b4b36f0c8fc79b774b265c 100644 (file)
@@ -1748,6 +1748,9 @@ static int au1200fb_drv_probe(struct platform_device *dev)
 
        /* Now hook interrupt too */
        irq = platform_get_irq(dev, 0);
+       if (irq < 0)
+               return irq;
+
        ret = request_irq(irq, au1200fb_handle_irq,
                          IRQF_SHARED, "lcd", (void *)dev);
        if (ret) {