From patchwork Sat Oct 4 16:40:01 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 396529 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 20626140281 for ; Sun, 5 Oct 2014 03:40:41 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751289AbaJDQkg (ORCPT ); Sat, 4 Oct 2014 12:40:36 -0400 Received: from mail-qa0-f44.google.com ([209.85.216.44]:44602 "EHLO mail-qa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751085AbaJDQkf (ORCPT ); Sat, 4 Oct 2014 12:40:35 -0400 Received: by mail-qa0-f44.google.com with SMTP id x12so2036957qac.17 for ; Sat, 04 Oct 2014 09:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=0Ei+h/DJTi6bQ0/G1vQl01RKPPmszFlKomRdfH6+pr0=; b=P0xsBoCLogliMD/8z+P3LQ+omScwBVPVGqmuoOrCeva5k4+MB9ctsK0fEBjWnzLZ1L +lq/nw9VXG8yCxrAAtaRbecVVt1Zw5Hm2JHYKRHZSiEoVXDIEl/C/gBFrDjGWXgUSDDy iBbyJCuv30tN3IltaQpqR4EY27vRQKnuZ1LZ5sXfCWIMOxfticGsN/6vcGxGVqMvt/lh pAJ3nj71Ap2B6RJgBgn2m8Er2R+txbStScSHKBZVTiqTSEfleEuqOntTJXSOyUx2sKrP 6RuqAvJWZH06N5La0rKntk/cwGA4uGsqNxOWc/azclbqWD/29JCfGx8zk21b5HsXIMhV 8KqA== X-Received: by 10.140.97.9 with SMTP id l9mr14658155qge.7.1412440834726; Sat, 04 Oct 2014 09:40:34 -0700 (PDT) Received: from localhost.localdomain ([187.66.157.233]) by mx.google.com with ESMTPSA id t106sm8108850qgd.24.2014.10.04.09.40.32 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 04 Oct 2014 09:40:33 -0700 (PDT) From: Fabio Estevam To: davem@davemloft.net Cc: rmk+kernel@arm.linux.org.uk, Frank.Li@freescale.com, netdev@vger.kernel.org, Fabio Estevam Subject: [PATCH net-next] fec: Fix fec_enet_alloc_buffers() error path Date: Sat, 4 Oct 2014 13:40:01 -0300 Message-Id: <1412440801-15381-1-git-send-email-festevam@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Fabio Estevam When fec_enet_alloc_buffers() fails we should better undo the previous actions, which consists of: disabling the FEC clocks and putting the FEC pins into inactive state. The error path for fec_enet_mii_probe() is kept unchanged. Signed-off-by: Fabio Estevam --- drivers/net/ethernet/freescale/fec_main.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 1f07db8..620feaf 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2746,16 +2746,12 @@ fec_enet_open(struct net_device *ndev) ret = fec_enet_alloc_buffers(ndev); if (ret) - return ret; + goto err_enet_alloc; /* Probe and connect to PHY when open the interface */ ret = fec_enet_mii_probe(ndev); - if (ret) { - fec_enet_free_buffers(ndev); - fec_enet_clk_enable(ndev, false); - pinctrl_pm_select_sleep_state(&fep->pdev->dev); - return ret; - } + if (ret) + goto err_enet_mii_probe; fec_restart(ndev); napi_enable(&fep->napi); @@ -2763,6 +2759,13 @@ fec_enet_open(struct net_device *ndev) netif_tx_start_all_queues(ndev); return 0; + +err_enet_mii_probe: + fec_enet_free_buffers(ndev); +err_enet_alloc: + fec_enet_clk_enable(ndev, false); + pinctrl_pm_select_sleep_state(&fep->pdev->dev); + return ret; } static int