From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758521AbdJMOvf (ORCPT ); Fri, 13 Oct 2017 10:51:35 -0400 Received: from mail-cys01nam02on0079.outbound.protection.outlook.com ([104.47.37.79]:62630 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753533AbdJMOu0 (ORCPT ); Fri, 13 Oct 2017 10:50:26 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=nxp.com; From: Madalin Bucur To: , CC: , , , , Subject: [PATCH v2 4/5] dpaa_eth: cleanup dpaa_eth_probe() error paths Date: Fri, 13 Oct 2017 17:50:11 +0300 Message-ID: <1507906212-10076-5-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1507906212-10076-1-git-send-email-madalin.bucur@nxp.com> References: <1507906212-10076-1-git-send-email-madalin.bucur@nxp.com> Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131523798237009506;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(336005)(39380400002)(346002)(376002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(36756003)(77096006)(305945005)(2950100002)(106466001)(5660300001)(86362001)(50466002)(189998001)(6666003)(39060400002)(85426001)(4326008)(3450700001)(104016004)(53936002)(356003)(48376002)(2906002)(47776003)(8676002)(33646002)(76176999)(50986999)(81156014)(81166006)(16586007)(50226002)(110136005)(54906003)(5003940100001)(316002)(68736007)(43066003)(8936002)(498600001)(97736004)(105606002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR03MB2368;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC007;1:1+KqUNzGE95y3f4dn4vdeRuHMAENIplvL6I2cQh8LElu4hr3ryJeDTx3hW56JCwx2d0Xtt6eJcsU8HuZDtSmu37awWJjL1JwHIhrCBfxcbMQpJpxzSfHwfW1Ni00nsV+ MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eed4c65c-5eee-4c4a-4b6a-08d51249bbd1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017052603199)(201703131430075)(201703131517081);SRVR:SN2PR03MB2368; X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;3:ewQCAZvIwVyWaxK8o1Pt+IyV/z09t6mSQYS95Xba349OLo6mZaU39q7em1WWijrYegBhfn2VTmlbl49cfNK4wuCLaH85yTBwN2HTLwfioxgzJMO3crlTNOQ/eePSQtW4HUPRxFeEqennlMR6pUYpH6KiFPw6BP9mMOjNLp372BJ3SXQge1uNwG/grP2h7A/TiIWB6U2qw6ZGvkG7FprTmElriHrBspRBi997U8Dar2S9Jtdrx0e8OAKP4qg9vtx8vQNuCOLUP8J2KmrbbRWChzGLYnL7n35lsZ+weCJ4egHjjUcJUXk22swJ0N2snIikn7myrujoMk460XuNplXtB+6MOinWAzMAURv0hFZ3SNo=;25:/mWB+oILtlO81IDdIy77cXSSFp1iwYEL8VjQsueOkIigecfrfjgjPc+vEWWPOHpdUfeA6BgKy0X3+XOnPNuf8jtSP0lQ8RLw+gIXRWxb+hm09vWMcp/qrYIqJ4N0akBY+j8K8leWPbG6uhxZu36NSNJfOJhNrERwoELlT6mLyRVinEwyvkuUvkGklRHMIVCCljIH/2ZLBLDNCqS+AdREo/T1FV4NMDQnh2qMf8glsSd+TkahVu/Dnq3hqWwWXHz1LV5PeVNLl3nEZQG8kJj0IaPHFeKreFhxWLmARFCB8rWPuNpBHsc95iz1vV9WxHCVssGfmB4p1PjTn6R1gYuI/Q== X-MS-TrafficTypeDiagnostic: SN2PR03MB2368: X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;31:X6OGNaOt4AdU8ejKs4aDrSUOR00sh3dLjsTgAw8KwsNFzLt4s7ae0KhZ/p/MxA4smYxH/HboLsza+Dyl+l+HIN54IWTHU4pTXVm01ae3BVzLMcB7tVJlZizwB7+lRPfRfhq7NQRCgsOONfDYG+yeLPDa9Tzri0xic0i/cx2rVHznLW5p4cKThX+PWCDp2Q+xUQ8w7DkycwoEW1Ec6D4sDgG49JnOVgalHgLKjrWhMbw=;4:ms5Xpfdy/yUzgRzYdtw+5395r5qI2yHr9/qvdqgOjE1pYq+iTSZzm1QDqQ2CRbW/UNyISDdT3z35qFuAfRPBiKHA3vwgE2HSYe36/MfbePEcFmeJd4RH+/HShUQIF8vZ65xjoJDNMu9LU06crKlNy52ISIX5izBtZyzI81aFdtBgBCPIIhdRPF8iVl602smRn884CjZW0ECSxSJXep/wKUFlWEwVyUru0cFhl4r0P+jfrMGxsVBtGyFbeVcPsPFzZz4TyBrToRnq6H0txylhDrwmxyvzUjiraRlgx9U+Km4= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123565025)(20161123561025)(20161123559100)(20161123556025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR03MB2368;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR03MB2368; X-Forefront-PRVS: 04599F3534 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR03MB2368;23:DIvz5iKNWcXie21nZBi1OgdvUo0biFBefwhs1m1/Q?= =?us-ascii?Q?0g9o5XPGS+fHn1Eeo8Lj0CM/ykxoi2Rq7hWFett2gQMfzmylPWel+/DvLv66?= =?us-ascii?Q?vw0nuI+O0dJHFOEX65foQjSUGjUynxPmAbUBpt1Tbp31buW8SEtv4zQBHuoH?= =?us-ascii?Q?8fOs7siHGkZcOm2jXoFBGT6QLzrhWm3Oa6ilMel8o3mm0mFiua0r7Y6zKiMT?= =?us-ascii?Q?YhW0+A0aW8wUb8QiA9HfUljSA7RsNyQmNDmgkEqQ/q5fzx3f8L4L6CQFFuLF?= =?us-ascii?Q?1KOPHZxih1KCV3UpkZyT+o/7utRWhKwlQMf6EmCnpjMBJSeD4dh3RF3ZTnTS?= =?us-ascii?Q?BreZ3B4lEYkaXIXH68iIS6tP4qU4RS8Wy7zQ7qdTvw2UrDvoeq7/AvctTu/G?= =?us-ascii?Q?WrInMCoF6km6s3JjvHGT89gIRYusFWIENlFgukr4MNJvHpWGi4zM4lp5EqBT?= =?us-ascii?Q?qsO2A+78hOq/nzp0wfhMmMjh2GEn+r1OoQVj/DdwdEKio21nRBy/rbhkseF6?= =?us-ascii?Q?ZKQMlNi7ue+1OXyxvAjCRJYFgc3focrM3AP3x4HMCnQIgIH8l6DzXQMZOBvr?= =?us-ascii?Q?gvHU2X6KkjSbQpH4HuAieZFhkuWE+qkSgZLylrPgW/znqJ9VZk8JMdzFNL9A?= =?us-ascii?Q?lUr0S4H4+Td6VhSTShqJ2HkMvLBBoBpuixuEfcfdtY3RxcF7oU9xdBgpQpBe?= =?us-ascii?Q?A9UpidwSk9vHUCGIDz1/H4zIxTRnhzFYhEPN/Z7zS7t3MNc809UZHQf5riI7?= =?us-ascii?Q?NLDx/AZezmitCyfl1+qGdxFnRB7UE2/ULsFGs+iYV5uoIMG1ECARWZ1l5F9U?= =?us-ascii?Q?T7CElbyJBAm/e1C4OtLkHsMCK0vRUdlAGkUygUuNjPmg0YWtZgxUXZPU0hFm?= =?us-ascii?Q?biMckyNubR7F3t+js1e1LUMh53Imc7fNB97mkmqLzBtFceKOT42dmg0joTUW?= =?us-ascii?Q?Ov0kd/nI6TdJjag9o/6ChhbHh7+w/9t11IMVdQa1Y/ONBHIdIg5Mdaq/YYZ/?= =?us-ascii?Q?Fb1vZFgPQvNFo+O6K0YwBLzpWfeLH4IxIDrptYGJH4yt7y37Xd42F6Am90QE?= =?us-ascii?Q?61eNwKIrTTCspGyktk7GbaNAE/9zD7sR6Ws4ZA1rLEm2UEfBZG3TySeJbv2t?= =?us-ascii?Q?n9QipjL0CPjuzkJ1hwtK7X/PkKSxETcmlFB2DRTBljGPzVHEsokfg3B9/gO2?= =?us-ascii?Q?Te9sGPwboa9Lou00Jh/Mss+34w/nokMd02A?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2368;6:oO+Sq0VJgQZ+PctxnOvWNOr3gsGQWOl4adc3TSQuSZWqmDleLYsuOnxKGPKse+PnzV2IoLNdpdwmoG8NBAaCTV3A7BDeUeMzeLNom6oVgfoPCQVzT+eXsIqha5i8nwghg7S0DRleG8ri3nmoGkSLdlhs/aX02P4PNwoCGfAVOd2tRaRAPo4euMkrXTRA5XKdPTv0npky1cz6vsDhcwCmggpWxKWQpXGws1YhegrGuSqJFkS/wi8ySy9M9hLJk1LzE7W4c7Fy4ximZfLNOBi57ZJm1YGL+Qlif0qAFzvbJ+8pJX7SF9qtyABIIcY3aXYYjlsNCUPM8pOuc7mSKIBP+Q==;5:qvYtTXix1NWos316z8V6KhWJf5mldnnq/a29xYaSwNbLCHgZwYB9JtRTXG7Ys2iuxWsjJ6WBN088Nj57TgxXXvhVJEm3LvV0iwmIAEH7fSNrpq03AcUPC2nsDBLCZd983YwpHCFoTR/yVvrF3f2d2A==;24:zx0+dgeN+oMT6dAQat5uKEh0YKl9hUC1d9NkX1W1WM+bsFhzGIM49i+BIAbD1kTGVSk3R5knXDKplV5dYKB29oLIuDKMoQvYDLhhq+8ZjZU=;7:PviXWRAUcAHwBMvBe0jjLxt60ECcGNnpkwkR/Zm+piVgUkQyP/WD1/O5PmFkuULU6Faws6nGOtSZzq6fwxdaXKeBmTxs40E7HkoCzk/XGjU19Eg57dLACkZGbfkdMj/NR3xJBtTpkz3Ir6DtgeV3jXLy76u065MtvaJs5AAIudm/vIZbEkHdB11PG9UkQ9YR687a8oMt6FwV7a7vnax+KwLdWzEm7QirsMnleMcaXV8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2017 14:50:23.3733 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB2368 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 53 ++++++++++---------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 823aa65..c6b97a1 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -2695,7 +2695,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) net_dev = alloc_etherdev_mq(sizeof(*priv), DPAA_ETH_TXQ_NUM); if (!net_dev) { dev_err(dev, "alloc_etherdev_mq() failed\n"); - goto alloc_etherdev_mq_failed; + return -ENOMEM; } /* Do this here, so we can be verbose early */ @@ -2711,7 +2711,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) if (IS_ERR(mac_dev)) { dev_err(dev, "dpaa_mac_dev_get() failed\n"); err = PTR_ERR(mac_dev); - goto mac_probe_failed; + goto free_netdev; } /* If fsl_fm_max_frm is set to a higher value than the all-common 1500, @@ -2735,7 +2735,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) dpaa_bps[i] = dpaa_bp_alloc(dev); if (IS_ERR(dpaa_bps[i])) - return PTR_ERR(dpaa_bps[i]); + goto free_dpaa_bps; /* the raw size of the buffers used for reception */ dpaa_bps[i]->raw_size = bpool_buffer_raw_size(i, DPAA_BPS_NUM); /* avoid runtime computations by keeping the usable size here */ @@ -2743,11 +2743,8 @@ static int dpaa_eth_probe(struct platform_device *pdev) dpaa_bps[i]->dev = dev; err = dpaa_bp_alloc_pool(dpaa_bps[i]); - if (err < 0) { - dpaa_bps_free(priv); - priv->dpaa_bps[i] = NULL; - goto bp_create_failed; - } + if (err < 0) + goto free_dpaa_bps; priv->dpaa_bps[i] = dpaa_bps[i]; } @@ -2758,7 +2755,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) err = dpaa_alloc_all_fqs(dev, &priv->dpaa_fq_list, &port_fqs); if (err < 0) { dev_err(dev, "dpaa_alloc_all_fqs() failed\n"); - goto fq_probe_failed; + goto free_dpaa_bps; } priv->mac_dev = mac_dev; @@ -2767,7 +2764,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) if (channel < 0) { dev_err(dev, "dpaa_get_channel() failed\n"); err = channel; - goto get_channel_failed; + goto free_dpaa_bps; } priv->channel = (u16)channel; @@ -2787,20 +2784,20 @@ static int dpaa_eth_probe(struct platform_device *pdev) err = dpaa_eth_cgr_init(priv); if (err < 0) { dev_err(dev, "Error initializing CGR\n"); - goto tx_cgr_init_failed; + goto free_dpaa_bps; } err = dpaa_ingress_cgr_init(priv); if (err < 0) { dev_err(dev, "Error initializing ingress CGR\n"); - goto rx_cgr_init_failed; + goto delete_egress_cgr; } /* Add the FQs to the interface, and make them active */ list_for_each_entry_safe(dpaa_fq, tmp, &priv->dpaa_fq_list, list) { err = dpaa_fq_init(dpaa_fq, false); if (err < 0) - goto fq_alloc_failed; + goto free_dpaa_fqs; } priv->tx_headroom = dpaa_get_headroom(&priv->buf_layout[TX]); @@ -2810,7 +2807,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) err = dpaa_eth_init_ports(mac_dev, dpaa_bps, DPAA_BPS_NUM, &port_fqs, &priv->buf_layout[0], dev); if (err) - goto init_ports_failed; + goto free_dpaa_fqs; /* Rx traffic distribution based on keygen hashing defaults to on */ priv->keygen_in_use = true; @@ -2819,7 +2816,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) if (!priv->percpu_priv) { dev_err(dev, "devm_alloc_percpu() failed\n"); err = -ENOMEM; - goto alloc_percpu_failed; + goto free_dpaa_fqs; } for_each_possible_cpu(i) { percpu_priv = per_cpu_ptr(priv->percpu_priv, i); @@ -2832,11 +2829,11 @@ static int dpaa_eth_probe(struct platform_device *pdev) /* Initialize NAPI */ err = dpaa_napi_add(net_dev); if (err < 0) - goto napi_add_failed; + goto delete_dpaa_napi; err = dpaa_netdev_init(net_dev, &dpaa_ops, tx_timeout); if (err < 0) - goto netdev_init_failed; + goto delete_dpaa_napi; dpaa_eth_sysfs_init(&net_dev->dev); @@ -2845,31 +2842,21 @@ static int dpaa_eth_probe(struct platform_device *pdev) return 0; -netdev_init_failed: -napi_add_failed: +delete_dpaa_napi: dpaa_napi_del(net_dev); -alloc_percpu_failed: -init_ports_failed: +free_dpaa_fqs: dpaa_fq_free(dev, &priv->dpaa_fq_list); -fq_alloc_failed: qman_delete_cgr_safe(&priv->ingress_cgr); qman_release_cgrid(priv->ingress_cgr.cgrid); -rx_cgr_init_failed: +delete_egress_cgr: qman_delete_cgr_safe(&priv->cgr_data.cgr); qman_release_cgrid(priv->cgr_data.cgr.cgrid); -tx_cgr_init_failed: -get_channel_failed: +free_dpaa_bps: dpaa_bps_free(priv); -bp_create_failed: -fq_probe_failed: -mac_probe_failed: +free_netdev: dev_set_drvdata(dev, NULL); free_netdev(net_dev); -alloc_etherdev_mq_failed: - for (i = 0; i < DPAA_BPS_NUM && dpaa_bps[i]; i++) { - if (atomic_read(&dpaa_bps[i]->refs) == 0) - devm_kfree(dev, dpaa_bps[i]); - } + return err; } -- 2.1.0