From patchwork Sun Jun 9 20:16:52 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergei Shtylyov X-Patchwork-Id: 250133 X-Patchwork-Delegate: davem@davemloft.net 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.180.67]) by ozlabs.org (Postfix) with ESMTP id 47ED02C02A4 for ; Mon, 10 Jun 2013 06:17:01 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751308Ab3FIUQ5 (ORCPT ); Sun, 9 Jun 2013 16:16:57 -0400 Received: from mail-lb0-f170.google.com ([209.85.217.170]:43492 "EHLO mail-lb0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750919Ab3FIUQ4 (ORCPT ); Sun, 9 Jun 2013 16:16:56 -0400 Received: by mail-lb0-f170.google.com with SMTP id t13so738985lbd.1 for ; Sun, 09 Jun 2013 13:16:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=to:subject:from:organization:cc:date:mime-version:content-type :content-transfer-encoding:message-id:x-gm-message-state; bh=BgIoMeuYM+0rK7Mvv4Wy7FBWtvx921+BZlVCXAXnKDk=; b=kX0Cay/hu0F6jqj+eON+Dt+PIWfNDaCM6e2ioR4Ty8/t8xMz+j2ETNTEXhgW2tuZxW xMYki7ROfZPHrwlQBbr66isUgBvemr7ADDhhXIjhLlmxbVmtyHFUhKit8BLM82OfDmgn 7eh6Xk6N/7aXi6099HlNn07e0SFEBItT0hbau+OsKOU2Pqqf9I7IPGeC7m7fuI/lC0ft axz5HW9NM1yOe9JwYZ4Poyx8p7VYNNWd4l+8tcfIEEgohOtC+Ibf5BvvSVpbXakbeLvF ridRuzuYLu2NYwP7GYkFwy7ilgYapYTIpaQtWmWEXRDa0BO/dFSzmJjpP2IiAN34H6As oRPg== X-Received: by 10.152.44.170 with SMTP id f10mr3470661lam.68.1370809014775; Sun, 09 Jun 2013 13:16:54 -0700 (PDT) Received: from wasted.dev.rtsoft.ru (ppp91-76-150-5.pppoe.mtu-net.ru. [91.76.150.5]) by mx.google.com with ESMTPSA id c7sm3253182lag.3.2013.06.09.13.16.52 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Sun, 09 Jun 2013 13:16:53 -0700 (PDT) To: netdev@vger.kernel.org Subject: [PATCH] 3c59x: consolidate error cleanup in vortex_init_one() From: Sergei Shtylyov Organization: Cogent Embedded Cc: klassert@mathematik.tu-chemnitz.de Date: Mon, 10 Jun 2013 00:16:52 +0400 MIME-Version: 1.0 Message-Id: <201306100016.52820.sergei.shtylyov@cogentembedded.com> X-Gm-Message-State: ALoCoQkLOOJvVdAFqzDUmklfoST3EdBn3zYt94BtVskH0wJ7QmxuuRt/0Ej4jwk0zNoAz0mRPU2f Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The PCI driver's probe() method duplicates the error cleanup code each time it has to do error exit. Consolidate the error cleanup code in one place and use *goto* to jump to the right places. Signed-off-by: Sergei Shtylyov Acked-by: Steffen Klassert --- The patch is against Dave Miller's 'net-next.git' repo. Andrew Morton asked me to do this years ago. It's high time to finally do this. Too bad it doesn't save much... drivers/net/ethernet/3com/3c59x.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) -- 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 Index: net-next/drivers/net/ethernet/3com/3c59x.c =================================================================== --- net-next.orig/drivers/net/ethernet/3com/3c59x.c +++ net-next/drivers/net/ethernet/3com/3c59x.c @@ -1012,10 +1012,8 @@ static int vortex_init_one(struct pci_de goto out; rc = pci_request_regions(pdev, DRV_NAME); - if (rc < 0) { - pci_disable_device(pdev); - goto out; - } + if (rc < 0) + goto out_disable; unit = vortex_cards_found; @@ -1032,23 +1030,24 @@ static int vortex_init_one(struct pci_de if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */ ioaddr = pci_iomap(pdev, 0, 0); if (!ioaddr) { - pci_release_regions(pdev); - pci_disable_device(pdev); rc = -ENOMEM; - goto out; + goto out_release; } rc = vortex_probe1(&pdev->dev, ioaddr, pdev->irq, ent->driver_data, unit); - if (rc < 0) { - pci_iounmap(pdev, ioaddr); - pci_release_regions(pdev); - pci_disable_device(pdev); - goto out; - } + if (rc < 0) + goto out_iounmap; vortex_cards_found++; + goto out; +out_iounmap: + pci_iounmap(pdev, ioaddr); +out_release: + pci_release_regions(pdev); +out_disable: + pci_disable_device(pdev); out: return rc; }