From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751896AbbJZQEx (ORCPT ); Mon, 26 Oct 2015 12:04:53 -0400 Received: from mail-by2on0147.outbound.protection.outlook.com ([207.46.100.147]:45121 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751440AbbJZQEu (ORCPT ); Mon, 26 Oct 2015 12:04:50 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none;freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; From: "J. German Rivera" To: , , , CC: , , , , , , , , , , , , , , "J. German Rivera" Subject: [PATCH 08/10] staging: fsl-mc: Fixed bug in dprc_probe() error path Date: Mon, 26 Oct 2015 10:49:19 -0500 Message-ID: <1445874561-14761-9-git-send-email-German.Rivera@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1445874561-14761-1-git-send-email-German.Rivera@freescale.com> References: <1445874561-14761-1-git-send-email-German.Rivera@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC001;1:3H+WbFQKalES7rdEYRIsVjRh/oSnEqwTC/Xs5fsUMUDeVthM1a2IzucfBkyFnPHiFh5spjkSWtELVOP4ck+ponjM7QUjpJfFkkjio9P0DM9aavhB6WcbTlaFWaYPMMdhqOkqHRrBY/aM1V49DzmuRU5EsJolrNI9x1uCJJoe8q5QuRFhDMbZ42LIeHTm8cS2bewbe63P9mBCPXTewn+8EkSnDhsPoPx4YBnJ1+mBTH5V9HPgzghnfC93G3bootlmzT5rCZ0WtetHUkgZCbmH7/LVyHm5zibU3F6+EclPpVftZnctShR5/9AZYz4WOrWVIEsyvv0JGLtXc02FNAmpsTuSHnTUWBRUp/G6G55Fig3+1Iz1xCHLjHzmHtWYDHKnTdrLTKJUCBeOou9KriQEaA== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(106466001)(85426001)(76176999)(189998001)(86362001)(105606002)(5001960100002)(4001430100002)(50986999)(5001770100001)(2201001)(81156007)(107886002)(5001920100001)(97736004)(36756003)(5003940100001)(87936001)(229853001)(50466002)(48376002)(19580395003)(11100500001)(50226001)(19580405001)(47776003)(104016004)(5007970100001)(6806005)(77096005)(5008740100001)(2950100001)(92566002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR03MB509;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;2:kEC/pe2uxv6RHSsTFT0Euwx3txpge+WqOw6RGD+NhQYl3WaLze91zNbCPDpunkKbtM1x9GpSkEO7lmMz59oVAUpB+ReKVVLkcL0j0pJZGHRSLRVyNQ0690C4p84Ms+4tOpaLIlVo39Ogp+eqis5vAdJEeaOJh979V0VElzGGNyM=;3:Iibh5iH0aRpJL3FqMcRsoRyrj+3XxB3zs4ISp+PTDQsUSGxVmN3Tr5KsvLoWOW/dB6eW/zEu2PjIHQo13QYRP14y/PUWjm6Yee+p397Y9ooaLooMgnEr88HaSeL5wlG1zD4XyGaE0SpJula/NFOJoJKiGzmUxkSOruNRzfqv66bRdY5TxkbKurp6avmsx6csX/3nyGHzGMGgjSwJZLPNsqvGgvR5KyPo3ZAl5IhtiEI=;25:zjAYBdppK2SHQqBNHKQqXA4lrKy5PMms7Szgs2nOW4UwosFyVFPoNS4m+HlkSofwIt8cpVzZbds+whGn5ZYCZeoh1aavbVDwZ50lay1gik7kmOskaN5Om6FqoGBaAoh+lhnJ8mMKAdalpN+26kEeD8kXWAyDX09HFPGAQnPG4upBcRZo0TQ1kiVNQoJdiIO4HHqqFz1/biYGvohGunPE0NMCb7MBIxGwa3+NAV+u+Jv690vVvT/jBYh707jpQ3btxWdpl5hbFsLh3zuSRg0eaA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB509; X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;20:MZME8XV0CUy0WuUuRxVoOiWh5QEKHRqYgyM9Hc05RRujN9OPhr4fH+4bBGpTcQChVYuMxkR6avx8qynEt/jURJeG42qB04HL+7t02QAAFiKWwIS5HrEkyLRIxoxdRqqqSFQXTa0RGK8mxIqwPdUtu3VhSjTGAFhTxbKYUeyYA46rtduuSO/oe/ZTRqqHuSY3sUo/NQ8U5CL3fQdIclI//q5K1pQNj3c58+gM+OC6o0uhm7ahb8FtToWfBiIfVt2OnmTCi8bwFTGCAy6EwIUnmXpxwnavqLFUwkjsm7T/pSo1TP0n1pDHWdIwpKCHm92kDjqiEAn3wHyyIGsKkxXlxMk0il1yumEQNWVop3J4fP0=;4:0bNXnEir3s44Ivs2B5kFI/FWTNWBRD9xtYZUxlaAyFqh6IjKWrnSeXsP3RgDJ8BaozuBYowGUxc9XiucI17okI7mX+S8YIZOMj3k+3dJye7fDvjQOujx2BLbaqc9qxONcToybNhpHmOPfUQw53CDANVyGj9AFFj5jQrPCTBGL4OUAdPjYHEWxwHb6o2QBYddxhkUuTWmV+7OQ38A6q1JhjXiolXjd46m7CCKn1o6MOqgL8/aCKS+eVZloQsd6WFJ+X/Jsnb+mMkgcjySlqpmv4vhYb64DwPSzaGab7NrMEH29SxYuxo8SUnmyWxxY33w3SFRWWIFIiHm8kMg2oJy5hZ7zPOFZvF2HL121QmpgQAZAIHmJSEklDEdSoxw/pF5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001)(102215026);SRVR:DM2PR03MB509;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB509; X-Forefront-PRVS: 0741C77572 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR03MB509;23:dMulKTj/F521QrxSrymhFp4QYm0F9+qNOi0b10zr/s?= =?us-ascii?Q?xfUMCVul6SEnXC0XjFgrXCPDjXjhu8TOTZlQTJ9iN/5lokJYs1UXo/sS2VA7?= =?us-ascii?Q?TN21urwp3AQ5k/7vviDW2EZykiAXYfrUv5Wal/FBaXRRb224qo7JXH1tXX5V?= =?us-ascii?Q?KcUYCZUG3r2+YzetzqrB54RDC0kyeuMHLbNMgo+HJSGwGnRwCsxxp77P+Yft?= =?us-ascii?Q?iJM818kkitTjWpI+XUJ7ZxbRXVS5MLYJFjenZlJ5vRZDKP3oPm0vezNFHeuw?= =?us-ascii?Q?F46Aqfbjzb+UidB/r85STgUcPHTECAhu0CYsRAjgpHirajjhrHKcsYJBTTfN?= =?us-ascii?Q?bY1uiP7HpKk2Aizz6s2X5EImBz2L3D8/ZgeyvyNOoljHSOLoP+aaxflu8Jt2?= =?us-ascii?Q?IStBiiaVL/vfsmJc/K3HSqN6igBzOf0kpD+coFw1PfXo14vlgXKYiSroE0yT?= =?us-ascii?Q?KbhlYL3CxjwiejfZtE8aMNisVtJaYfYHpuEIW9vNbEZfde9Juclc6pmCoseE?= =?us-ascii?Q?G4vNBvOfbTOkYlPQu7thn9MTrAUissjjiGudE22LDNHPyizJledYFx5+J2YK?= =?us-ascii?Q?iiqdR3DFhLokUhgCyRjoNWJ6TBoVKF241FxlPR5Lvb20Y2J/RWyDKSSLKLPN?= =?us-ascii?Q?ISqfYPAZhlkYYBxzXtUgdzPq9p24+cz/n7mSqUQdha0RVDmvWvymWxPzFtSG?= =?us-ascii?Q?hHWjEucpbWC9L5vx0Gmas8uBD6/RlvwPHjlBoJVCgxCBDJreVA5Iv2wbN3a6?= =?us-ascii?Q?QQbrqUQrhwcPpEG6JK64SFHlRKC2lZ71dm/50nHWnFWVB+quth3+z9CH/d4F?= =?us-ascii?Q?yTXydeWswIuHIzeUjjzPsK4pGTSBnNpoWKYyEC0o81e8DTuOs5DJmiaHzMDP?= =?us-ascii?Q?n3fmXdqcJ46xukQDk13ktVGOso0MRj4kBVSWlnBxbosA5LFx5xesJ6syG3+0?= =?us-ascii?Q?NMTy58SkRFw/t1Aq14aX4+0yCxVzqtv8hbAv8ghZU4YJNED2SoiTf7QZb1bN?= =?us-ascii?Q?BtdT8FOnksJCA8m8QIRcHYU/IzlDj77PM7xeCZa8uUs8SVqcqjtK4dYVkcR6?= =?us-ascii?Q?Llth51ijpODwJEGQeYti511FgVci0J8WFb+BacFucG1nVgI9Q1t+OFZ5FaGy?= =?us-ascii?Q?Kt6BNRPAo=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;5:dj/rW7tDzADw9vSK6nq2fyWKPOGUZqw9QzPPDnj03BfkR8balXTm2nvy7yrZv4ONd8mOj4Uwj3NyazFRDMoxWY67jkd9Y9JO8RJU4Mgr2y/FvSa1Uw33q2QwGRuAElLVIgQUN1Gi4U7dcbnHTNEpmw==;24:hSepqj/jFUsHkk+y7Iqj/jO8o4FohrrLs/o4Ak4NQzyLOuOfvsRZgwXqwONNNd1FBFbmP3DtotCttZLWtAxFPQmF9155aaX7OVus2bm3zT0=;20:1bIrKe10qbpAurVAI9qf/D+sYK1CxhRPluMGIzx9y45OzFsjwnaq7TZ+Zi0p28LixlQPtD8Bhus5tzhaixWXtQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2015 16:04:48.1894 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB509 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Destroy mc_io in error path in dprc_probe() only if the mc_io was created in this function. Minor refactoring in error labels. Signed-off-by: J. German Rivera --- drivers/staging/fsl-mc/bus/dprc-driver.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c index 455379d..3eeafaa 100644 --- a/drivers/staging/fsl-mc/bus/dprc-driver.c +++ b/drivers/staging/fsl-mc/bus/dprc-driver.c @@ -401,6 +401,7 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) size_t region_size; struct device *parent_dev = mc_dev->dev.parent; struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_dev); + bool mc_io_created = false; bool msi_domain_set = false; if (WARN_ON(strcmp(mc_dev->obj_desc.type, "dprc") != 0)) @@ -413,6 +414,9 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) /* * This is a child DPRC: */ + if (WARN_ON(parent_dev->bus != &fsl_mc_bus_type)) + return -EINVAL; + if (WARN_ON(mc_dev->obj_desc.region_count == 0)) return -EINVAL; @@ -427,6 +431,9 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) &mc_dev->mc_io); if (error < 0) return error; + + mc_io_created = true; + /* * Inherit parent MSI domain: */ @@ -457,7 +464,7 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) &mc_dev->mc_handle); if (error < 0) { dev_err(&mc_dev->dev, "dprc_open() failed: %d\n", error); - goto error_cleanup_mc_io; + goto dprc_open_error; } mutex_init(&mc_bus->scan_mutex); @@ -467,19 +474,23 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) */ error = dprc_scan_container(mc_dev); if (error < 0) - goto error_cleanup_open; + goto dprc_scan_container_error; + dev_info(&mc_dev->dev, "DPRC device bound to driver"); return 0; -error_cleanup_open: +dprc_scan_container_error: (void)dprc_close(mc_dev->mc_io, 0, mc_dev->mc_handle); +dprc_open_error: + if (mc_io_created) { + fsl_destroy_mc_io(mc_dev->mc_io); + mc_dev->mc_io = NULL; + } -error_cleanup_mc_io: if (msi_domain_set) dev_set_msi_domain(&mc_dev->dev, NULL); - fsl_destroy_mc_io(mc_dev->mc_io); return error; } -- 2.3.3