From patchwork Tue Oct 21 05:35:34 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: roel kluin X-Patchwork-Id: 5160 X-Patchwork-Delegate: jgarzik@pobox.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id E36CEDDE01 for ; Tue, 21 Oct 2008 10:35:45 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752031AbYJTXfk (ORCPT ); Mon, 20 Oct 2008 19:35:40 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751478AbYJTXfj (ORCPT ); Mon, 20 Oct 2008 19:35:39 -0400 Received: from nf-out-0910.google.com ([64.233.182.184]:25463 "EHLO nf-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751860AbYJTXfj (ORCPT ); Mon, 20 Oct 2008 19:35:39 -0400 Received: by nf-out-0910.google.com with SMTP id d3so1054055nfc.21 for ; Mon, 20 Oct 2008 16:35:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:content-type :content-transfer-encoding; bh=yt99aVby8yedReobHWLare33MSg+RXXX0Y16C7gRcLo=; b=LExZS/KHXv9KT5DdrFYkPhcun4wXDAsj2wsJvB0NoEkiLTeXOnId2xcOmzV+A/oyuL 79kX+c57/m8Ck9rqzckGMB9BOdXbWClPJhL/4lVe41kVx2YtzpYnX9YS2BTZusnXe241 Qud9aaKzSSKKXLJRKf/zUNIuqkTNd3FsvH150= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; b=lhO6A5O6mORJrfXUe00juOyYoIpXTxpcNvybgMTb07n/6AyHQsnQJbCLnSnZY9FiLB gVLtbdouNM38+78ZuhF0cKcGqRZTQ6fqVihXdiHI3c0N4eB5WrHDXF/T7VKR9rVZ1CXE hecV2M1efVO99QgzX9vlC34RUSS0JtKAf6/d4= Received: by 10.210.120.7 with SMTP id s7mr4910245ebc.186.1224545736985; Mon, 20 Oct 2008 16:35:36 -0700 (PDT) Received: from ?192.168.1.117? (d133062.upc-d.chello.nl [213.46.133.62]) by mx.google.com with ESMTPS id c22sm6981405ika.1.2008.10.20.16.35.36 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 20 Oct 2008 16:35:36 -0700 (PDT) Message-ID: <48FD6A26.9010000@gmail.com> Date: Tue, 21 Oct 2008 01:35:34 -0400 From: roel kluin User-Agent: Mozilla-Thunderbird 2.0.0.9 (X11/20080110) MIME-Version: 1.0 To: galak@kernel.crashing.org, netdev@vger.kernel.org Subject: [PATCH] gianfar: fix handle errors returned by platform_get_irq*() Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org platform_get_irq*() returns on -ENXIO when the resource cannot be found, but this remains unnoticed if stored in an unsigned. Signed-off-by: Roel Kluin --- since commit 489447380a2921ec0e9154f773c44ab3167ede4b -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index b5bb7ae..64b2011 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c @@ -161,7 +161,7 @@ static int gfar_probe(struct platform_device *pdev) struct gfar_private *priv = NULL; struct gianfar_platform_data *einfo; struct resource *r; - int err = 0; + int err = 0, irq; DECLARE_MAC_BUF(mac); einfo = (struct gianfar_platform_data *) pdev->dev.platform_data; @@ -187,15 +187,25 @@ static int gfar_probe(struct platform_device *pdev) /* fill out IRQ fields */ if (einfo->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { - priv->interruptTransmit = platform_get_irq_byname(pdev, "tx"); - priv->interruptReceive = platform_get_irq_byname(pdev, "rx"); - priv->interruptError = platform_get_irq_byname(pdev, "error"); - if (priv->interruptTransmit < 0 || priv->interruptReceive < 0 || priv->interruptError < 0) + irq = platform_get_irq_byname(pdev, "tx"); + if (irq < 0) + goto regs_fail; + priv->interruptTransmit = irq; + + irq = platform_get_irq_byname(pdev, "rx"); + if (irq < 0) + goto regs_fail; + priv->interruptReceive = irq; + + irq = platform_get_irq_byname(pdev, "error"); + if (irq < 0) goto regs_fail; + priv->interruptError = irq; } else { - priv->interruptTransmit = platform_get_irq(pdev, 0); - if (priv->interruptTransmit < 0) + irq = platform_get_irq(pdev, 0); + if (irq < 0) goto regs_fail; + priv->interruptTransmit = irq; } /* get a pointer to the register memory */