From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752508AbcAFWWS (ORCPT ); Wed, 6 Jan 2016 17:22:18 -0500 Received: from mail-by2on0119.outbound.protection.outlook.com ([207.46.100.119]:28039 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752354AbcAFWWJ (ORCPT ); Wed, 6 Jan 2016 17:22:09 -0500 Authentication-Results: spf=permerror (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 RESEND v4 09/11] staging: fsl-mc: Fixed bug in dprc_probe() error path Date: Wed, 6 Jan 2016 16:03:27 -0600 Message-ID: <1452117809-1870-10-git-send-email-German.Rivera@freescale.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1452117809-1870-1-git-send-email-German.Rivera@freescale.com> References: <1452117809-1870-1-git-send-email-German.Rivera@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD034;1:oPNAzyG7yaWYzU7NB1pJOIRCHfDJB2XQsNcEMipj6MUQ/7H8th3tEuyytIaMWho4vBWMPqGJZ4mmgJswa+WChzmXgB2uDeIpobelNc7L1UKxxuQaxL/2qKz0HREL8bVbuTmP6Vlwo0KEpE17BM2V3oNV8DnDzNDsGV3KVDQP2DbIv2O17ap4GHbVqxUePkU4nofRe7RC11Qrz1+wr4Nzjj/SG/X/vhcOCMiMPnWmQc6KJMZrluA6jVS3ihg10p+2BKqUsQVi/5oC0WfbGI0OwNRdBJtqqGqLKv2PjC9dZ+q25FghXoW2eSpsKJ1e6gdyyCsHO835CfQX2rKuP9kZ6r0MTHOtIBIdy4ZBCJVAS+z20urhEy+afX6jXaQqA8gUzrfq/5TfGhmHRqCEMGc2HQwfXJPicwyNIdGu41f/YYG8vUJRlyUgpQDDY+xepWJH X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(3190300001)(199003)(189002)(19580405001)(85326001)(50226001)(50986999)(1096002)(86362001)(1220700001)(48376002)(97736004)(5008740100001)(106466001)(92566002)(586003)(2906002)(76176999)(36756003)(2201001)(2950100001)(189998001)(87936001)(77096005)(6806005)(47776003)(104016004)(5001960100002)(107886002)(50466002)(19580395003)(5001770100001)(4326007)(5003940100001)(4001430100002)(229853001)(81156007)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0301MB2080;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB2080;2:lFOtTjGC8yqkO58OeaC2y1PRrb1+iqRpJ0JpHRr5JCH1pELhJVviZe9r3x69hcrJIWa9BQnANIgTOaJDB03AutwtLBOLojVV4JGATisupCx+tgvQC4BLomq9E+dBFIRkUGsbwf+LQT5EtWeHiDKemg==;3:W03jL3XFinzQVtXxnyLkp2sJnVESVkBvN4qpJ0e0M3WjVNaL60vGWkjvhtwsy7gdECQiHYE4rGxd9VkpFXl4lIup9eGG7UjaX8G8y1za3ZoL/pRZKKj5rJAqANdWe3+746TGe0dWNAOWYNIk7yetzpgp+yPsq7ugsYJoGgbvwRNin26Ts6uvKnfcAe9qvwrQkmpXGQV9Vzzcg/qbT80FqQ2f/qrUwZfUxfgcDg2Mv7g=;25:Wy2NkaKe1y1gkeJEkyHLyaZhiX1enwu9D4c+7TkXNOmA+XJPwpqc8yjHZkascEsjlkgxTiEKs98IdwsYYFtt3FQDaQlBLIvtimjqGJMNAIkyb4eoLdbfwbYplu+6tTSth0JWqc4Oka6QP/EkJHgECp3msu8TpROQzCK+p7IWzZ3LsluUw0zTBDX5fgjOnwiM+asutiJ8aLuXoWrbwXH9+w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0301MB2080; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB2080;20:kAxhdetZFm4/6/PRpon8vm0GaX3u8WapPASh59aPGRZvdoedPCnJ8GMoaBtAHLKF1C9WjOAqWJOYhScFSwrR0OucxzDt0UcActwTtCgZFTxe4RtTqYxsAeZXp7b2FLSY4GP+bz381YnrifxYkmoay1lIpf2TR8qrdnuSSbtPxUyIZThmNX+OMIlu6glBEaiH576C82jE7pLZb8FJdqamfcnTohZr5LTOMux+zNvou0lLyxhuv+gIVFQAZ+adrxPqs7C13TOOUrf1eVbshLzq9RZgpaS5g+X5g+zCQGiFP3zyJxruBLNI7Ugt/zcRG8Wp2JguRHYgZO4KmXVXwXy0RByb1gsbIy/Yr6pJ6m+Ck18=;4:GLbqqmNm8h22jziepodmoAehVv4isrOyLLw+nmkyg+PeFF1ma8pqLB+OyQGHIwpKNFHQvzW/U6i2PCkbTla9lGLX/qJacTXxnW323gRNOLMDMP2Mxzdo7Uu5lIEe1S/aJcrZlKYWE6Se6Q6ke6WwRwxvew9lY0BsDROhGp1f5sNKP0lERkngVIM0LfBGThYnzdSvdiwDG0IB0TLD/4TznrXk9WYbCcSHLSkwl3pYRNJma2rnZ3uUo6AqaOiAeoUOsFd5YQN0xYUp5jFLHj1Dt41VSRUJuLBkEvzMEunem0LvCMXUsyhD3iQbNyMsQH6AF+6rJlwxETDtb18+vhBlddEqp60IOYQk8VnCjt17f30u5vjFpAG97SheKDVPl9B3VC0n3kDN6qMdaOWzbyj4M3Zxf157MxKunQvhibsqBS6x1RTYrjbDtO1ulLAZDTxv X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046);SRVR:SN1PR0301MB2080;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0301MB2080; X-Forefront-PRVS: 0813C68E65 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR0301MB2080;23:lL7odzE164sCb/3a4Sp02e8fHnVVCipL2ykrcpE?= =?us-ascii?Q?kAzDXpn9hVuN0FLYwPSPsQh+G8Ng0CjGVnIXb/UpOrxlzBT+vsI3XArzlVoV?= =?us-ascii?Q?nZ2kf31gJ8zsioQoAmsS1KcpJ2CY87zTWP+2EQ/i8DgeUGxog/IFN5kaZNgF?= =?us-ascii?Q?75BlKPnfrATdJ6kK/UPmgtqlcrTEUDwzrFiIp0OVlQIUPDFuEaUZ17iXw+YL?= =?us-ascii?Q?waY6rngyvYTRUiBqHqHRy+GFLA4R3poFvdGh1ZRoM5mqHkwOJcMVEpKXT/yC?= =?us-ascii?Q?k5ti6fgzXBUSKTh/bc+JB/poVtYu2eI52etIQOAuznR8lhbikV/hAxUzGp/N?= =?us-ascii?Q?rcskmr/9xTBi5jnvZS4NW8gYZqq98F4ykKezg1bm7r1EPdU3Bg4OXSFjDsqN?= =?us-ascii?Q?rdaSbjRjuTyQXbUKu9sm8+hmgENO4tLUJNRYhzVSsYw9bqQ6nwxxzPEnNsTc?= =?us-ascii?Q?sQaeDH6cbxaNHM0O321XvQOwIV4m28Z4WWHN5BASzSt0qKhkoOjnKxGvpfVr?= =?us-ascii?Q?Ts3ttpCxqOUslnbxWozBIRXp/LejVahGUzfvFxLfFY9XVcY6Dr8dYzxBIZrh?= =?us-ascii?Q?Vq0KbSivIGoQSZGN+UkrTppuaoTeJW81npP5b2UNiHeJUmtDnaH2YyaDk+FC?= =?us-ascii?Q?z4OYILl5W1UXzF2vJwYHvEknvkJaaFESHPt+TN7zOv5sx7n/O9enzf/lxZg3?= =?us-ascii?Q?jezJFzSrddD/opDMsZThZruNZZKInAjdUoh839VxludSyy/q7KAykMn/qX/+?= =?us-ascii?Q?0IzyTnEFc5afEGc2eIvIFxzJq4Mw1vMwO5FYVpDbIMdTk0BoPJtrMZRJ56MG?= =?us-ascii?Q?08ZE8ZYdtTC5U4Uzx8wYIgLGAXIMtwM0OeAePhrmPZCdsdcyUnRKMeqAhImr?= =?us-ascii?Q?yKSm8C9OGZOsL2iChvl03G57vDolwsdl5/Gp1xm0HwL34QHL8ieRp+B/0cyc?= =?us-ascii?Q?ee9H0PFDF+VFAuvtRQzD/sheDu144QonTppr3piwFByZ92ZjlFJhaEoWdxOj?= =?us-ascii?Q?+HGJkKzp2umg5hY9aAfzxZl915DecMOZI5l5HfA28d9Tg/wJoJOWPn1729sP?= =?us-ascii?Q?5/5cOjk1tyQHnBWeKBoleGClFZB0cRr9UsJkk4SLAEG9T1Ip4ow=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0301MB2080;5:JjLVlS34oKBsyu6D/5x4pJeRY6CIv2XW9g2BFDY3QAX0uUapBFAXK1cFSqloufcVDEPMGoAOQBcDo/XjrB+VI7U689VekjxqES5yK5EJVDEkPUcGw3sIGYbthlVoHcWB/pVoMiIjRZOyGT2TaYtB0w==;24:dpWyyp5MKEUWjuXVmZeLkZrSsZvTcK/uN54b4Rv88W9PeHQZBZByqjSVFctIDze5+jVgeFfIyDEw8Mh1hVtfU/fwqc4Sd1uq78a62kZYjso= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2016 22:21:56.1008 (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: SN1PR0301MB2080 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "J. German Rivera" Destroy mc_io in error path in dprc_probe() only if the mc_io was created in this function. Signed-off-by: J. German Rivera --- CHANGE HISTORY Changes in v4: none Changes in v3: none Changes in v2: - Addressed comment from Dan Carpenter: * Renamed goto error labels to indicate what the goto does drivers/staging/fsl-mc/bus/dprc-driver.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c index 38fc404..42b2494 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 error_cleanup_msi_domain; } mutex_init(&mc_bus->scan_mutex); @@ -475,11 +482,15 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) error_cleanup_open: (void)dprc_close(mc_dev->mc_io, 0, mc_dev->mc_handle); -error_cleanup_mc_io: +error_cleanup_msi_domain: if (msi_domain_set) dev_set_msi_domain(&mc_dev->dev, NULL); - fsl_destroy_mc_io(mc_dev->mc_io); + if (mc_io_created) { + fsl_destroy_mc_io(mc_dev->mc_io); + mc_dev->mc_io = NULL; + } + return error; } -- 2.3.3