lib82596: Fix IRQ check in sni_82596_probe
authorMiaoqian Lin <linmq006@gmail.com>
Fri, 14 Jan 2022 06:57:24 +0000 (06:57 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:05:43 +0000 (11:05 +0100)
commit 99218cbf81bf21355a3de61cd46a706d36e900e6 upstream.

platform_get_irq() returns negative error number instead 0 on failure.
And the doc of platform_get_irq() provides a usage example:

    int irq = platform_get_irq(pdev, 0);
    if (irq < 0)
        return irq;

Fix the check of return value to catch errors correctly.

Fixes: 115978859272 ("i825xx: Move the Intel 82586/82593/82596 based drivers")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/i825xx/sni_82596.c

index 27937c5..daec9ce 100644 (file)
@@ -117,9 +117,10 @@ static int sni_82596_probe(struct platform_device *dev)
        netdevice->dev_addr[5] = readb(eth_addr + 0x06);
        iounmap(eth_addr);
 
-       if (!netdevice->irq) {
+       if (netdevice->irq < 0) {
                printk(KERN_ERR "%s: IRQ not found for i82596 at 0x%lx\n",
                        __FILE__, netdevice->base_addr);
+               retval = netdevice->irq;
                goto probe_failed;
        }