Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752243AbdLBUXB (ORCPT ); Sat, 2 Dec 2017 15:23:01 -0500 Received: from mail-pl0-f66.google.com ([209.85.160.66]:45206 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752027AbdLBUXA (ORCPT ); Sat, 2 Dec 2017 15:23:00 -0500 X-Google-Smtp-Source: AGs4zMaML8YuJTaf5FrHcGIGQBeHvDSEcNDazH7af2jf+idi7qG7PhaAOeqBRkOystGv72tLUx2dZA== Subject: Re: [PATCH 05/10] net: ethernet: i825xx: Fix platform_get_irq's error checking To: Sergei Shtylyov , wg@grandegger.com, mkl@pengutronix.de, michal.simek@xilinx.com, opendmb@gmail.com, f.fainelli@gmail.com, davem@davemloft.net, Vladislav.Zakharov@synopsys.com References: <1512242782-7134-1-git-send-email-arvind.yadav.cs@gmail.com> <1512242782-7134-6-git-send-email-arvind.yadav.cs@gmail.com> <2b23637d-0d19-4a6a-4e67-e64968f85415@cogentembedded.com> Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org From: arvindY Message-ID: <5A230B9E.1080006@gmail.com> Date: Sun, 3 Dec 2017 01:52:54 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <2b23637d-0d19-4a6a-4e67-e64968f85415@cogentembedded.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1410 Lines: 40 Hi Sergei, On Sunday 03 December 2017 01:38 AM, Sergei Shtylyov wrote: > Hello. > > On 12/02/2017 10:26 PM, Arvind Yadav wrote: > >> The platform_get_irq() function returns negative if an error occurs. >> zero or positive number on success. platform_get_irq() error checking >> for zero is not correct. > > The why you consider returning 0 a sign of failure? Here, Returning 0 is a problem. Because IRQ0 is always a problem. This function is for getting an IRQ for a device. So we should check for 0 also. > >> Signed-off-by: Arvind Yadav >> --- >> drivers/net/ethernet/i825xx/sni_82596.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/ethernet/i825xx/sni_82596.c >> b/drivers/net/ethernet/i825xx/sni_82596.c >> index b2c04a7..a6d56f5 100644 >> --- a/drivers/net/ethernet/i825xx/sni_82596.c >> +++ b/drivers/net/ethernet/i825xx/sni_82596.c >> @@ -120,9 +120,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 ? netdevice->irq : -ENODEV; >> goto probe_failed; >> } > > MBR, Sergei ~arvind