]> git.ipfire.org Git - people/arne_f/kernel.git/commitdiff
i2c: highlander: add IRQ check
authorSergey Shtylyov <s.shtylyov@omp.ru>
Sun, 30 May 2021 19:13:45 +0000 (22:13 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Sep 2021 09:41:20 +0000 (11:41 +0200)
[ Upstream commit f16a3bb69aa6baabf8f0aca982c8cf21e2a4f6bc ]

The driver is written as if platform_get_irq() returns 0 on errors (while
actually it returns a negative error code), blithely passing these error
codes to request_irq() (which takes *unsigned* IRQ #) -- which fails with
-EINVAL. Add the necessary error check to the pre-existing *if* statement
forcing the driver into the polling mode...

Fixes: 4ad48e6ab18c ("i2c: Renesas Highlander FPGA SMBus support")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i2c/busses/i2c-highlander.c

index 56dc69e7349fcb553835b8258741351fcdcff51e..9ad031ea33009340d2b712538f56fdf539dbf2ab 100644 (file)
@@ -382,7 +382,7 @@ static int highlander_i2c_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, dev);
 
        dev->irq = platform_get_irq(pdev, 0);
-       if (iic_force_poll)
+       if (dev->irq < 0 || iic_force_poll)
                dev->irq = 0;
 
        if (dev->irq) {