From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760737AbbJ3T7b (ORCPT ); Fri, 30 Oct 2015 15:59:31 -0400 Received: from mail-by2on0126.outbound.protection.outlook.com ([207.46.100.126]:56681 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1760676AbbJ3T7R (ORCPT ); Fri, 30 Oct 2015 15:59:17 -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 v2 09/11] staging: fsl-mc: Fixed bug in dprc_probe() error path Date: Fri, 30 Oct 2015 14:43:35 -0500 Message-ID: <1446234217-25512-10-git-send-email-German.Rivera@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1446234217-25512-1-git-send-email-German.Rivera@freescale.com> References: <1446234217-25512-1-git-send-email-German.Rivera@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD021;1:MlfUxW23zV0t0HackyLw0e3+hy3CGwkzkCLR1ldefSxYDLYktJl1ZEK3bJ710PgCcUfv+fpVTGu5GvXZhtZ1E2Lxa3G7AeWaTomeqElXGteJD7MzbXhi6wgVeXiE6Y50eyqvgf4AXQZ+ZYPv3JOiVFuqod7tSk3RPHRh1m/qoQGvNB/gy25E8FcNoDzeOgh5ZXUTxj4qPOeyzSU5U+snkeH6DXAfu9u+yUY0Gy84XVW4smCcj/R7ty01UxdzPOfutULw+hGuLoH5A0XgFw2l1iSIak2NneEyOuamj2874moBbgLByGlrPqw+QrQuPMe1jx11XeDbf8WYjtRINSSsr35RJ/dCGZVOlz60SI8KioPiYKH/7bnTC+ZdBh9+M/zmivtMJw9J0/ZnsbEF+JU8oQ== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(229853001)(87936001)(48376002)(47776003)(81156007)(50466002)(4001430100002)(86362001)(92566002)(5001960100002)(77096005)(105606002)(2201001)(97736004)(107886002)(50986999)(104016004)(106466001)(2950100001)(85426001)(11100500001)(5007970100001)(50226001)(76176999)(189998001)(5008740100001)(5003940100001)(6806005)(19580405001)(5001770100001)(36756003)(19580395003);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR03MB506;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB506;2:3dBUB231w+Q1GuT9vhSj/VgWLrg7padIyCoXYlQKlgV3O1Cc7RzgxECCu56oCKwM7mwOYV1TZkJtqZRVMzqEz9gfu1ICc0t4b7u5YZsIo6rPt1r5q3dTYX8Ur20dhwLEH02OGU/rRzXRDeZUGgM0nEMSQrFzoubThFBqAYSnBT4=;3:Zju7sRRAOdn+s4Hht3jOqzR1YTIWlV9l1Ha5nU3qtOcIDdYObPmYxlnctuTOiBjFdz9fO0jDImId7COg8qAl/EdtGxAys6wRKiNNfG0yiTRZFB77dQtXYS/7DzoyxNQNHLlnPP9nk4NA6f9Nftl7KpSwG06WU+7ZJg02AXQrpL5qMQwbwVRiGtrp0G5S5tZOlLT8EqphM237VshuF/T7UX4eGn1PLzPZ192rMkmaeM0=;25:6GDSgEa43YcguG2lCHrhjO9+qZ2ak7iguQDTXJ4zMNR7Wve1nTvwbWlsPWOd6ns9WZozRy3k/j82zko5OfZcHqKsC2NoWb1laR8TsMJLt6jtwY/630gXuejcvAsJVVg/nSJectI20RTQCEqX3av/x0KbHZL8nzaBar9yy78zqWc5RQSZPeUkv0qIdYnyqmUAMMTTNSC1vjItiM/+OpUfS34aPiZMmNzM91zrLMWVcIQDsKXP4IgmUMPy0p2dy/tr2BB0bzwN2uIIqXJQMJVXig== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB506; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB506;20:VSBrH9f20eH4M4p8N3VKXAckidB2phsHUD1p6eCQrJyMvg5M3MeXfSKFibp1FiLJRWcgXwDHWjFr0AgBaO0hDJAgCuSM5UIZNABRj/WfCqwwPI/VZDCE/a2dbiaLOMjBOM33tWrl4039QgX2MdkxDi4IUSI2eWn/nO1wMz2S6TUUuTMcDP5+0SFXdbMovJqxl64YUL2tFOfK4WwMKFixE1N5qVd8idrBARvG3LnlObUpmjDiQeKW/JTDguy4vwc5NfHpgIQuxAOxbFTDhzuacPS4W2+2MQeWPN/Ti7qyaUX2cRusdTShYXgN758kx3CdMqCdBqvqu6XSwGK/YetuCtDoiHa+cGeWFXTn3Gc16Ao=;4:CoPAN7ZXNdM7KLvsk4XRDu+5AmMgNr5tUAHZkbAK/JkoC+ejxWsMeLEXPcvG/ebJ0Z/Hq1WD2/VdQsXJzlkESMvWHMZnlAy0gMZjcX79UkvYU5pffTsDUt5dKpyaZ0eKgoQY2IBzyv8U9Xrs9vrNHEgJHpC0V+oCQja+y/vSXzrW06q7rJPjvTP3sDnSPW17GUywk273AjfCEVfGiiOelNHiOqLEO0Vbh3BV3DhR0vmb5n0UKCcVl6V7SWp1ALbz2iCuNtFZs6XunErP4fFCHHuyVFidgZz42Eg/h0HBFKTWTWZ1A6vklq9fz82XRgN2L8n5iJ8ALNWI4SMOQ7X6y+iBIYJgeLMIYayxe+N0I2ndgrBx0CgB601ieTDEYivcnOxTov4SXWZXTVC1hZ5QUQ== 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)(5005006)(520078)(3002001)(10201501046)(102215026);SRVR:BY2PR03MB506;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB506; X-Forefront-PRVS: 07459438AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR03MB506;23:w3znDNTO7ReMQSa7DcnKjqogLDnBoASy7boP7UVULT?= =?us-ascii?Q?N2Cq3XmeORwbh5h/Pgdy7j0WXzPJxYF7lgyJTUr7hLP2Jf+kn38Y00c4zCTy?= =?us-ascii?Q?XOWWpiLPq+20JdF1vrZza3KHKyVEBDY++GuL7eXzqLPM4pupr2ijwjtGTEV7?= =?us-ascii?Q?5Ez3x3BJ8HznOOTfGnyqBdLewUxoFrwhEPnlcrJlPH6b/Z9QnW+KicLmduXj?= =?us-ascii?Q?vfu1Kmlq0GtgtmyD6QRg2E0WwPXF4IPBbOpkfGlZrPoJNVL0vGdaE/U3CvaM?= =?us-ascii?Q?A5EQv0aomoQjqD775PKz5u/FCsdLZmy4v5WAn/3LAz2jlZXoAaYpQ5V9FhWf?= =?us-ascii?Q?PlRgHlMwsTrag83Ph7bbe+0iaWx+Vw4Wmd0/hkCI5N0MU/dopcpJOoVUV8cw?= =?us-ascii?Q?PT0D3O9QfYgyWi7Zdo/z5SNBbA2zHvmCUHNQTUebsT/QGyyxZ2wz1ebOCE10?= =?us-ascii?Q?S5bOXr2HKesNYwiQDy/ymbP2nUg6JlM9SLAEvot/C3yLpjAcS8EgV7vrcBRn?= =?us-ascii?Q?5KzgvqRTib6UIv4cO60zk2L+2Gzo35955LLS23fCsbRNzhwXvr0La/uq3vOf?= =?us-ascii?Q?msGTlriEGqZHYAlBHAdQ3Z+4BhNr/MFbmEj9edQkzC/oBsDV6cTUCw2P4KdX?= =?us-ascii?Q?FcpG2POIvOzPJsTfoDUrJBrth6WCG4cnQ2wlmSx3BsufO+kOmjfILYmOrEcN?= =?us-ascii?Q?UI6ne/6jAql7wstLgni8FcasU9Avfx13mONhDlOe+iEPkhDbyDA5aaN9JBcQ?= =?us-ascii?Q?2bwuvBKfec6Hy6xXpEUrGhFGzKsrS4bxLsaXVp0vdPEKj5nbPe29Nsjxl6hy?= =?us-ascii?Q?DMqhLBvHNxUx3mJEukVMZD2SC929zNvvLprtInLCNMRNvs7NC8maCiYTnf+w?= =?us-ascii?Q?LDW5qMCBl2/szIDVgbbpvo+q0VD2k8gIRf/sh9nfOfTKSbm1oB1HenHFnR8K?= =?us-ascii?Q?rrNiu18LCQTK39cVVQGiLHGeRNnKjISkuabwaJP3ob0WcErPaSKPha+g7yYb?= =?us-ascii?Q?etCQbaukMxEv0YhUK1Ev94hBRQLN/gWW4+naRbfNwS0czjUJwL8hqF3jqL61?= =?us-ascii?Q?WtEk78IxK1TZelw4MR36tF1N7i?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB506;5:u+9GNydkTjvI7Q8PEM0SU555a51DwLWbXcNMafFxbbuC7ZbTdj4cIkKl0lK/eKRTd1P5t7GV0xKDf8Mw3qz+7m52ddTPWkikLqmiMhq2Vs/dYNDPjAXr642N3EooUwd+rhdJTyOfN59gC4+MSaSjyQ==;24:ddNMr7Itm4RefM8xpkC9AbQ1l0ZlWWg5Lebbbpe4gdh2hrYHiL2Q4vCEG8iEtW50fh2ByDgDWSndJpHIcMO09inhTCDECxJ+NYAgWwRAUoc=;20:XmO7vyXtGj//b5pAxTuNkOANwXj62IXb93CyFdQImI/r0WZMcMmTXXtgZWIXQ7wNnivE1pnt8OtoN/hZBZysCA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2015 19:59:12.8816 (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: BY2PR03MB506 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 --- 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 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