From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966352AbbKGBr0 (ORCPT ); Fri, 6 Nov 2015 20:47:26 -0500 Received: from mail-bn1bbn0101.outbound.protection.outlook.com ([157.56.111.101]:41512 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758142AbbKGBqZ (ORCPT ); Fri, 6 Nov 2015 20:46:25 -0500 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 v3 09/11] staging: fsl-mc: Fixed bug in dprc_probe() error path Date: Fri, 6 Nov 2015 19:30:25 -0600 Message-ID: <1446859827-6927-10-git-send-email-German.Rivera@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1446859827-6927-1-git-send-email-German.Rivera@freescale.com> References: <1446859827-6927-1-git-send-email-German.Rivera@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC001;1:vLslwRpLhVuyN6oN89CsOBMY2pyQc20zdHn3pKHSUmBtsFhwO81U+BMM8jKO+tEMct3cQMWzIxTt+C76XU3qyXfWKWp17EHanxtcVjLuz7mQ6TgqWw+cqtXgfoSJq+0wxLfSdkfSNM/5sA+/9n1uO3tn+H19p260YvefV7d0iB/jUSwawHVVdelRnGgLPv576s63aAsbz1qK1a+lgp2666kbUVelr7CVuOma77xkvEvy5VtBEtEddxtySFts4zEaD0FdgztWSD5nOMLCUUWLF0vrWr35q+KOpm5pIo/2gjaP/pFydwBEjVd7HFocIXHVjdZaqtRU0xtzjmll5TJGSCQCwm6d4q6N0ErH3WQ4/sgLwEsQSsgJgZJ7xpOUgAj+OACEQWp0180d57vISqcm7Q== 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)(5008740100001)(50986999)(97736004)(36756003)(2950100001)(4001430100002)(104016004)(189998001)(50466002)(92566002)(107886002)(6806005)(5001960100002)(5007970100001)(76176999)(19580405001)(50226001)(19580395003)(48376002)(2201001)(86362001)(105606002)(229853001)(77096005)(87936001)(85426001)(5001770100001)(47776003)(81156007)(106466001)(5003940100001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR03MB511;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;DM2PR03MB511;2:U0vEoWn1PQOqLg/MOV8GIMNbZWsGkR9tdON0GgqMegTPJQAVovBYJnbgGd46g8U7vltAhugqTr+jjQJ4ODfoVuKc1IJ5sSzZ+HINae5y8XWHpLoW7EyuW7BuGGzxzh5s23YFb1jAY6oIfcqbt7E9zUpt1jWiw971AZAZmn7Pz40=;3:WnUZ/jt8xrE23lQqutG0SJx8s7QwqZjqW+GcNrvn2yuUKTDuDRcnZeyC3t104ocq0YeRP/eZ1t5gbe7gvZRzQiQfCuJZuyB2hWdpfsh/Ylow1rXPXlku0PrNGyYwLjUBdQGk0T/VgMHAp1BRfK2Il+fSp+XdLj9Mm64yqPS6U0dYg1ktWpRYTjRCoaH8QfKH/jaK+ov1/kDV6FpuE7Ng+0ufCHzzsaaT3qHsO/AqeXI=;25:E8Jd+n42h4XF7bhDx4XYNLRJOf/1KAip0aO59d0wVTWQQPdjQ0l2KfeCam+Hs5ZI0ygRhQQSa2LUAJbiIVdFQIh9px91GCZHFFZtIjfk0/GAMmW31UfncAiJoFtxpXf+5kfsshIUqtdamH5+Vj39Mgqt3VuEsoQ+f5dC8kH0jMkrDJmcc8X8E7hKKYwuW7S7b4wEaQ6y451rce35ZCXb1Fv2U1oAuF8HQI9ZWqR9mAnjKGuulMTSfEBhZfPTJMR580k2I5BEkVDsQeNZ80t81w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB511; X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB511;20:9eeWL+zBd886B9vFL5oAnngREG2cTo08/nxfKR86jsdRAOtnMWMZRE1V7kAVQ6u2qTOZDVG/ejeARNTOaKr7xMDQc+LccW5plL8QPGZZmviS5jc81og0Lqa32maQBS3+wsx/x5V6mw8xWKn+tQm+tqCWBcXvLWJZ/POu9lGp+yYlc970Y6KQoyUWOkvZPGCC8JvZfEyE3A7Pxxo/H/ZLwCsi+l1dvoIfBMkEbHAv3XWGBSn6xP5+lkyEwjzEVJ/oQmyxiillXEbrUxEEU48fJZNI19GDYt/uylSj5Pq4v6OeMZDKW3szObUUzr/q5XeBui75kh80YyBoBGQd7624WhDQuITBkLYO+cVgldzQRnc=;4:ZhraCE/Kw0/AhFh0MnszBGRrZGtVWJqtHlw9nrVyzRceq5Znw42zTGOd8z59zCbXg8cpjLBKGv+iFVyRCkKjBxAauxsNklVCATuq/LCJURswEizLcsrovUqWv1BTEpclYb1wZbs17samm1Y2J894taTGA+dzfF/KspgD35RFdXzI1oUjDXCES4sHA3rrYHfTw4Pljiglb7Xrs2JMoSBZjuvaf1uINyOshXTBwRgXIEA3NHGplBZAS+aCG3fjCawMiCQwQts9XBm5F0nymbm/qDuvcK40tu6WHrd3qVPitpxSF14e8F6x/ij4uuIkkwJqYmiqWHdWM6ONlWQoPlEK+qPYmLXAXTu00xLjnTi0CTqAFHus031Eyg+4w5u212Su 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)(10201501046)(3002001);SRVR:DM2PR03MB511;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB511; X-Forefront-PRVS: 0753EA505A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR03MB511;23:TZ2HW0qIF4HSBdPynK5dGdXsG15gEKfY2WofE9pz5x?= =?us-ascii?Q?LaZXcvOLgjhbKiiC/iqwmmHl82nWX2Hje3GkHgriGitl2v6ISEzBi+ZSceo1?= =?us-ascii?Q?ntvXYT5lcwhnd2/mWkeSdu3UnZbUGr/5D7o7c41G3qVniMKYQFuozPVTlJlH?= =?us-ascii?Q?PZWTqO6YqOirnYgU8pc/RU+dlM/qPEZvV6M6WBi/HMTjO9CWr6ZkyKtgcmOD?= =?us-ascii?Q?Ye0cMqG7ck0KO5LO8GjG3PFUyvniCjk7Bwp8cMlpAb30AhWt0d1d1KtooeQ/?= =?us-ascii?Q?arJ4Q8XWaBclkFcLHtnNmfqox3NGckTHi8aqfEDTlVg7nu+dkWLxi5LZBqmV?= =?us-ascii?Q?yFYvbsfZ4LHg9RIA7DpgijgBr98rmsDvsEX8SVTsVZg8Mequ3gBbGyoqx2VM?= =?us-ascii?Q?mKM/ikTzHQK3zeSEX2G2bU246xjome0MlDWBbKLYzXgJoiQvhnqgOya/pc+x?= =?us-ascii?Q?feIuyzlaZY/+DppEISwXl0aKC3WJxSRzPoWITXGGGEJXg/rCGWSlAN7yytyG?= =?us-ascii?Q?uvLcZGFBd4PiiTF275H+vez9ALEjxkT+pZyQg9NMKWAmE2MHdDx8m4JNMeQK?= =?us-ascii?Q?LIXQ7SvT+UbwGJfVbRWMifOkfqfmToEDnkhekNUQDSnf+d0B6Zck9VZbuKLS?= =?us-ascii?Q?C/FuSC7Ns2TKNJcHYK2oOPX4mQn8IvtHKlV1a38M907KpsymedpgINreq5Gk?= =?us-ascii?Q?uC0UxvoBHbovtFDWhEFB5HSvWxz6dak1S3ibD4mjL3kKxrx6OyNX1gLGhGwW?= =?us-ascii?Q?uVXs2O5nz5mPEI4n7GfhJULBUj4dgxUdqAaaVKhIslqhDo7n4dEH3nJGwvle?= =?us-ascii?Q?2dPsD1ZqQNvaAFHqLCBpqOllDDvCQaXAJJSu7t4S2X1EGA2iVMnPOhSW86NA?= =?us-ascii?Q?YFmdhJ+bgGQbXKY+3S2qAWWiih9hanBhQjef09D2fesFX64fLeL95xdcDsYP?= =?us-ascii?Q?9KaT2ozB0oCJmjk2+GBSHGm0duKljlmOtWdpN2hSX0KLvl3w8GD1TAqKOwga?= =?us-ascii?Q?F1xuWK1vKcIcn2BhTZnzrKrYWmQySPlRwdqNsdnAlIi+scVo2ve/++JWC/pW?= =?us-ascii?Q?ad0yU=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB511;5:otlB25rxsdruDacS1cSHrCM44Ah5gawB+MLi7PlhJm750wrTimHVUW77weJ2tER5eVtu1mo5CEdXPCmpaXJDxAMVtHKrJYrbjg+v9AT4OHGSLvR5lfG3XO6h6k6siUaufQh0qc4pAh2zm8MJj+02Qw==;24:ABv7kqsWgAOSyVF4ZetuYC/Be/t/NpP+A7jGNLgsiDeFiQcUHP03IuBG5yQCtwCXLh3ou4eVhtmuN93MP+lipmVegYMLWd88c1dCbCg5hJE=;20:OXmNJE33C8Ezu0i1GGXgLoZ8eg55y3E3qoQo2e1cuVKvQ1YpkxolIm2jBQL1N/ztYinCa5qU+Y/l73MNd4zSdg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2015 01:46:21.7267 (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: DM2PR03MB511 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. Signed-off-by: J. German Rivera --- CHANGE HISTORY Changes in v3: none Changes in v2: none - 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 455379d..7f1ceb5 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