From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756736AbdJPSh1 (ORCPT ); Mon, 16 Oct 2017 14:37:27 -0400 Received: from mail-sn1nam01on0067.outbound.protection.outlook.com ([104.47.32.67]:60725 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756723AbdJPSg1 (ORCPT ); Mon, 16 Oct 2017 14:36:27 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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 v3 4/6] dpaa_eth: cleanup dpaa_eth_probe() error paths Date: Mon, 16 Oct 2017 21:36:08 +0300 Message-ID: <1508178970-28945-5-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1508178970-28945-1-git-send-email-madalin.bucur@nxp.com> References: <1508178970-28945-1-git-send-email-madalin.bucur@nxp.com> Reply-To: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131526525850846759;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(336005)(39860400002)(376002)(39380400002)(346002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(105606002)(104016004)(106466001)(81166006)(356003)(47776003)(2906002)(54906003)(50986999)(50466002)(85426001)(81156014)(39060400002)(316002)(53936002)(498600001)(16586007)(8936002)(48376002)(110136005)(4326008)(36756003)(76176999)(43066003)(5660300001)(3450700001)(8676002)(50226002)(6666003)(2950100002)(69596002)(77096006)(189998001)(33646002)(305945005)(97736004)(68736007)(86362001)(5003940100001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR03MB2693;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD008;1:gUkP5gQdIvnztICAv94Fsmz0SjbFIZ2VoolIqEDVV1sVyXoNKMIPJIlzvfWLTfjsVFJ/E/H4aQ/c9uVnTwf0fdR8riEmdpfJ8v/pI2CEPvyiQ0HJfcsdUbw4qVk/IuML MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba376f1d-d212-4f67-7b1f-08d514c4ce45 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017052603199)(201703131430075)(201703131517081);SRVR:CY4PR03MB2693; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2693;3:qSXEesgMdhcGit96NlYAgmZmmE4V61CfGaRUHKeqKc4sogtPLoiHZC5RfXM00BiH0HRKehFwpggljwb82mvcJY5xgTl5+oMQZLRfgIm0BdI8CliEEdiiY63cwYdsSJLdtswFHFVthOmoR2i3jGUjw9ePOj/Hg9ah+yJsbH6/mt6XkKqO6nmqAf/0rFmBYJeZz7mvoyEje08VrHPLWjao8EpUj8zghkMwwamupeCN9V8+XD+MAFK7t9nOU/BriC/F7eIFw3/YNTrpRBva0HMH3ORRrtn1zwk6iKViIWZgSo76+J9RXr0e/jfjodqVdgogbJT92vD+16FPBUuq0VHN3rjAzcwsqddLnog95z9446s=;25:Auvh4woKTHWKCrHVTOOXWKfKSU7xUy57YkJiTYSyQom4W6biBCORENzyVvg4Qn/sayFHr6y17wQDgs6EpZpFrb7r/rL2EN4RYe6X/UZK6K1Tzy4K9oE7iJjaJQx4z4LPuSaPDn+1/8tjdmtN5xRsZIGNAqVMnJW9SN21VwXFg6EA5jCqyhJ+yp3fUorMC0iTfm7xa8SMIgk9jxuEMcE2KZe1R3V8pBHbQGNJolOyZ6P7CrFj+XZ1ILX93pjYQ0NSPwmJ7egJHU3LVhq6dMR9Y318SKMM6GqF0ZzPmwRXiGsZq84eNeQbtR5s7bTXdE1qyfqPg5yWhZzgOKgiyS4zKw== X-MS-TrafficTypeDiagnostic: CY4PR03MB2693: X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2693;31:WQXD5NSkB82E0niZI/+hGBjtDHpeMV5POJN020UwO5TATvBDDD2iAbu1sJ03pBvLrB8Axwyd3sEw07cSlGnyDWQaHegaYrXAGtCxqhSBrOwbqIQkowLPf3kwDZCoOLQww7ZdG7DO+a/ViT+Ic/AszrUHZ6OXuM+tW1U4rU/kYGnOhfVA7mCUbrtubjHYD9ZIWbHmF/gRd1ZFFZkQ1i99yix+1L9yzfLgn95F0QatKlE=;4:GFxjDigPDSXvPJF7YOxDbMzYaRXGBhFlUA2O58g5ilMQLKMUhIGqa+aYUjh/7q/cHovO8O7vH0ZZyIRhR/P9gjZZuD1lqyp0EJ0cHLPW70TuO1TD1uDn4wN027+GRQ9yvfFQupmQSXM5xVcrgHWYTqfYTHO9zGMqaoqOB3Nw27oCa/2MU7VNRAfS2cnB76XrDyz2dUpsqypamcP2R/Imt64fatHZ9ARmzT0EjKOFrswkJi4qg2WyHFQx8+05exoPGkgjhX6As6OMNOaiiy0pX104FnaGqmCzzug92zcYEPU= 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)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123565025)(20161123556025)(20161123561025)(20161123563025)(20161123559100)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY4PR03MB2693;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY4PR03MB2693; X-Forefront-PRVS: 0462918D61 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2693;23:/tUamhBZsZkbMox6jmDeZenuQMxsWWKUjL8R4eKPy?= =?us-ascii?Q?1syWs9jmbz7kM/SfLE6jjH1UI/7QJnPxBHxAQEwVynw7yVmJYey7YRA9uLhp?= =?us-ascii?Q?Td/Mp/dZIYe/DGpkeRU+k+EDTGJ/HyWye2attOAAmHzW6Cr7Dg2tO2R++WJC?= =?us-ascii?Q?9G2xjbWRCFG1Dw+OsM+aJH6ctOhGqh+8ACtlz9oNPmKnd7uCv3E7oJv5LrPu?= =?us-ascii?Q?RH5E+5gyAl1/H6aGMEZiZAAIv470+YjpS4ZdemWCzS//+nbTdwXSoKyS/TS5?= =?us-ascii?Q?2EPP1zK1a1qBH5PFe4yVYVKLE40iyq99GB2kVmfhxLOe2LUs2kcKAEKZomge?= =?us-ascii?Q?pw+ZUedghyffG4LZb2GNx3MO/u6VaM2EHTFaSY32EP3SC9qVo01IqfoLXwiu?= =?us-ascii?Q?t4Gn0t0La2qr8kTJHKZFOfHRQ1308J8/Om+tqPcOg0bCNJfKzHifxHoOqHxz?= =?us-ascii?Q?fnSGZrH0pyEmh90YhM8+ILWAjT/lhg1aetObX/6JpMhyibtpxbMtQTTdqkaU?= =?us-ascii?Q?vJ8fzd12MH8K4FZSbuKHLDGoF9mzqPwQJmHFFpxNXECg/NpbjEYUqryZqEjy?= =?us-ascii?Q?ConsvHzxckuj1LnpjlQyqV9nL7wzcUnsDatPRloWGjsvs38SXrBRN0ULbQiW?= =?us-ascii?Q?0EelxH853VgfIwG2Ql+CNKmQTRDQ1pOk+zPt6VHE2DYQPKnf7I72r+LmFXkG?= =?us-ascii?Q?u3F3HzurnEf9g8zwUaldHMby7uoaGWgcr61Ha4SJBS6J2htF8pONaLWHGWHf?= =?us-ascii?Q?lVf49wtfQ8fjECTMsQfvsVwjVGPfDUdYvbTeBSJ73RlQkEqQ/bz5zMJP8KsK?= =?us-ascii?Q?WhcJfNDskIrgLO220Qf+v8pqxyg9egaTvP7KxdoLFSOq5iOozjzE+seWRrV3?= =?us-ascii?Q?AA+/nQmcGPNPKUpdumLT2p6VudU4wOTnGBF0SoUCaNqMUfHNSJEXoEV/K+Kq?= =?us-ascii?Q?gU2IFLgLxETAQjrBTk1sJJvVtTI9UUGUtrWVg2YHkM7bP6ht6awP6Vf5UYtH?= =?us-ascii?Q?vrv7r0j+rd062bJEx8rzJBY+DYJ4E3LFoiFTkcDjRgJvSJj16fdGjmITIQ08?= =?us-ascii?Q?bnC8sJGJJz3hnJFzBYXgZSQu1no3G+hUOS4oK/R7A4S1sGLBOqte+TjeziFh?= =?us-ascii?Q?Kw41KD9wPb3WsI6pL7i3m7bi5VzP+rwlwutzypuUhenA0EU4r7wuUwZgVLjV?= =?us-ascii?Q?Du5nh4zB9MitEf7Suj2K62uRse58t9YNeVuS3ek1u72jwrYOXN+4HUUcw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2693;6:WHHEHw1beK/7+ANHw5SAKySunDaOiMus/Li48nbOb2StC2siArANsuY/P7Qee5Yx5ERiZ+eKl2xr/MIm545EvRt0h7w/4M/TZzGKdCNQxjz9qIg+OsnUtoFNqIYHy8LAqfUC9Ae30HX1LdbSTXKrTOjR7UzbvQk7leKOFwlEqX5CTttB03JClq71CwvwHxlIrExjKwIj3MhCD57qPPgq/5z/Hd21Pc95y76CLZ3X+BKi3nxJKk0LxmZmMSANGqkMueqhKnQz/8mbttiIC+pMZPQ82RbXaLcRrol9PhzWlhumTzzOqIMA5nndubWNQKaGTkxg/xi1qzRmJGaKpfv11Q==;5:G/uZnCX+8lTAUGApGgKrtcLo68AgGR3zfVN4O0nxqrfTWAg0FnQJ//7VxofFYDkiy6L96U63fjHb6W8pG42M5RxezHM7uVoWVC5fGw3JU3+RTexauu96ZlFn6y2w/LA1+Yk32KWQBgCl02KIxx1LUqIcN7V6UXTnkL6VNZYwlI0=;24:xtHJPWN2n3u9sahGRHy3fSaNnFinsBjnC5KAtXLER4V8qmS0x9u+9a9d5k1rIpl1zBvNpJiWsuhGigJ7TnQf0DnXf7gyMq+bMbrxOSdhB3s=;7:2VaUeBhzzi+0S051R07OTn5tpu2f7sWvbfnHPlkHNIiSkhINrgih5UDICLE+8VWpEW7W2rWnBwhETjvA850DmTygtD0kSqrldJ7V6tUbC6nHa9YbBTP3zm+BmZc+usnPGUQU3pYH48h9NQGHWLw/KwXA1socP2gThFaHTDJeF8O1ybDNT9ZrgUjoPR0Cf3EF/EzZeI3FeoeUIEX/uxgn6nZgKYbzM6XcdhhZu310UXc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 18:36:22.3702 (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.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2693 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