From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751610AbcFVV7r (ORCPT ); Wed, 22 Jun 2016 17:59:47 -0400 Received: from mail-bl2on0053.outbound.protection.outlook.com ([65.55.169.53]:23553 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751372AbcFVV7U (ORCPT ); Wed, 22 Jun 2016 17:59:20 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; From: Stuart Yoder To: CC: , , , , , , Bharat Bhushan , Stuart Yoder Subject: [PATCH 07/11] staging: fsl-mc: fix asymmetry in destroy of mc_io Date: Wed, 22 Jun 2016 16:40:48 -0500 Message-ID: <1466631652-25731-8-git-send-email-stuart.yoder@nxp.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1466631652-25731-1-git-send-email-stuart.yoder@nxp.com> References: <1466631652-25731-1-git-send-email-stuart.yoder@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131111054632772582;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(586003)(77096005)(7846002)(81156014)(104016004)(6806005)(8676002)(81166006)(76176999)(50986999)(4326007)(305945005)(8666005)(2950100001)(2906002)(50226002)(8936002)(68736007)(356003)(19580405001)(50466002)(33646002)(86362001)(47776003)(19580395003)(36756003)(87936001)(92566002)(5003940100001)(229853001)(97736004)(85426001)(2351001)(189998001)(106466001)(105606002)(110136002)(48376002)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR03MB2384;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD037;1:Kb2KeXKN1tCJIMFnS0XFyqxN5hRLF5nrVITXOKJI1rmm8cZClXv1UybfoVZDPw/h1sB1Kx0TQ0bILT85KA0255MyErUbdazDm692OI4exizy3MYsDy0W/9h94F7WuIs2kFMf+X0G0hftOSNV7TeWpgstgJiUERYZX6UF+YI/oht4oZGeQK+qOlccRapnU9g5hbxboBFHnd/9L5133pIeYRipyS9MgrCk4RSHs2LWN/qJizYmLyMzEqErytoPHiyD7fP+cS6ITXrbJ93/5LFwl13jfAx6OdZRlH6E363mn1dgwzZhKM+OFhCbL+SQmytwSO++7Pf+pOGjNmqQ0tuiEcwZLhvVe36Z9k2As5DHhrPmKhoh64YXmRMNWtTX600cvuESKfCiZhlhmo1wfaQz7vrIcHb8ZuG9MleP6sWIvLlM4+Q6MSSJCo2dPfX0KH1cxN433FrkfsqyLcBMTb8GKVD6mwMNpZiQvEQxHa05Ic3dQQOCxwPg40Iat2hHMmGD57w09voIM/9H+QZEhRzkiRR6joU0iiKMZa7xoMlAXibHnPWr/q09glmi740Vg+uQW0ITH6U+xExZCOxiAyflA6FAUa8LmaW8y0RrSenDrl1sPJvKGNmrGY9uBF7UD1BcIHKpkBA90YDYAnkxAfGb1IgtGaHKS01c4vGbQRawZDHnrALfQwcXg5qyW81dibo3 MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: c8e148dd-f547-43f6-58de-08d39ae65fe7 X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2384;2:Kg6Jgry3PIkFGOJBqY0Tm/2b51nPrcRrC5AtjKcnb6Y7epEJH8qsYE76sQYkUQYCobq7efR2evmBb/jfWACDy/oty7oLixLNrVIAyNnGvOxZTFU6JMM6BAp+2DfH4rDJO21KSmrAxAzGjSoEjTeiLwX4uesk0VfKQAYHisZXF8SIxXbn/LBvCI8puU4cFJMX;3:RFOc3HkkzclcNtMh7S+uQdkRSWM6jBYFeanM3choNJSSfPQMlMSXVgpReaCA5fepFf6HQM/XL1E0n33kBidcYAxenPo7ZmjFeFRkTkHXy5fyKwZedbiX7LbMlsyGGj6bpbeaGE5NNaeLXNtW+y5xM3/m6mLNAUXfYLc8oJojWIusyBEpsI6uvyZkx7XVEDbnht27tyVyJ1dBIOqJYhnJsxsU82P26yGjkxEh3F2PRlI=;25:yBA8UfcskGPXoy/UV6Z/RK9YeF4t3Ezjub9qRAsd14dmojAJY0S3X04G00RtIVrj3yGAS3mxCxpJpFqSfkMvG6m2nS1ET7Zlt1PANzWBMQZmUemfVlTAQmB/5Sx0LoqDYjLz7FrZng58VNp0XoREF0IjIGFomhKrEUShXI+Hd+f57+5L/tiRY12Hiur8cu52PYE5i90AKA9dmPDPY4eyR0c4qaY9xv8PvnOx0G5Usaz63G3lt3Xe/1myU64WKwdRFAUaK2MbP3hgVlbHD3lwXpZQprrA4xgBLmW59wWHBfv5xUMJY3fQXVdErPUg1g/7XrGIQubbLF1v6do/AfAjH+flvwwj4q5Qf8XQdWKp5ir4Edl3gBdCtoiC7i00ynynPxPywoGCpYaloUa4vQUBWSvSuZy9xJUgPxbO57TY1IM= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB2384; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13017025)(13015025)(13018025)(13024025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:SN2PR03MB2384;BCL:0;PCL:0;RULEID:(400006);SRVR:SN2PR03MB2384; X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2384;4:ERSTXTNE9n7hfVfmijyP8/uv48h97FoF8BIidxrrb1Ue9rVy0kgkLyPSqvX1SstHg8w3M5wBxJ7oxwoEdRIcCfHo5jCZmzaMNuHrusDiLIci8Z7by8raifb8HYUiAzpMQNzwjx+kUVzRZpEC9kBuZKG17gbQNuziCgyJra2PEpPdPR7g96O86Z4Rqoe9Q6IXV1ffNwi1xGjLiV3SBKdrVecFwuHp1oC+WhxbIoriCoyURDzBqDYLu1MtHi29b1fmd3W2EK4p4r6sxpoTVpiUyhLbMnOVqXSKMMpkh39UV5xDCahxS/RyCgR7Wum7M+XGRHfvv2GUY0egiD8tmYqm+rphpAhApbjJcfi667sotE7r0fiXEwt2REqeODJqVV8NtccAdRVIu573Pktv2Z8D6QH2sSslaencEqIFTz673e1hOsuwU/iyqcxv/uD+2tGzaef8MR3NyzfTPQsnvOAVqFlB2wGQUd3LCazyUPPJ6F3mTF59jdWmfFKctJ05Tt8nIgHDhYJqy/ZrlPFL6/204g== X-Forefront-PRVS: 0981815F2F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR03MB2384;23:4F3YXTsTA6XAKKfDR1bU3HHaLB9ijYLC05YiCIDbe?= =?us-ascii?Q?+Pxq9JX1w7P4T7WViIdky+zEPvgag5OkoZYc6izyWUNH0y7/O0MoC/8QAl9V?= =?us-ascii?Q?w85grCaviGMOleKvaC/pi/ojw5vo8i6Ndan6vAZktozvDtTlFeZ4MS/lt7pc?= =?us-ascii?Q?AFCovUw4zGnF9Fn0aNWstKAaUtpVLXTZL3uvHI0sUtHxb5hvIyLF9VpLnmKV?= =?us-ascii?Q?Y/PJHsnigh7wJi5yE9S7NqibBraW7kEmIiSDiZ44FKriL6w7yOKaWA1wu0AZ?= =?us-ascii?Q?+4GZL11L9FBySfBhtYhh5Q9TfenznAzz5/hdrMvwfX/oAYTBrPTZLZTzZTch?= =?us-ascii?Q?ygtiBq5mkakg4Mxr/VqfjIAokxYmwPblTk8vHZTx6O3HBgnSs7EpIVgzdy1r?= =?us-ascii?Q?sOZRZVjNg8N0psK5dnTredqx97UwNw+FOjd7t6rVNGmb3bSyaPOs/WAf/8jd?= =?us-ascii?Q?HdqzzU1ZfMdPPLNPHfzeYo5x+rJAg8ptN+oErvBl+Fhf5NY7sBdIZ5BcdC83?= =?us-ascii?Q?NNSX4Hkby9RW6UpkhVVT2Y/TBJR7kwM6Rb2WC3D4fEMFZyqQ9a5e90ZFJgVz?= =?us-ascii?Q?2juc/QsXfu81soDQnSWI9VJSCK6Rs4kIpiEwoy1H6+E8ZckVVijHQImvFVfp?= =?us-ascii?Q?K0VpITzbOvR5YumVVO4ej7fLUA2M09IjButX4OiTGNIHWSi/PkXst3pB/ecn?= =?us-ascii?Q?3UE6LCkb0a8hRLVYMfknGAwpaAi9D60krPcA4vktIoz9vQbIg9em1pFi4kiu?= =?us-ascii?Q?UpV8sjnpyYq/Q9a5p6F4jDvcElxDGq/D5ZupRCsIad4YgxvXiet51FinZmDb?= =?us-ascii?Q?cGIBaXPULiXV5T7zhMP497uWM2zY6OP9XC2af067OgKDVlmWlECKo0VeIslw?= =?us-ascii?Q?VMih1Fa865AIM4kNYx/IGkKrACtLtTXqtBip1sBKunJOkVb/17KIMrCS8vsl?= =?us-ascii?Q?Fwua1eV5bPXRLdeAivNAysApdW3ELrFPfwQtGmzhTLnRv6Q981BF+OZgUeHx?= =?us-ascii?Q?AxQIjuw638iI+9vaFbZLevrvjhPX1lyHN1JPuJqDtbrysQ0Za+GOVF3J/5Qb?= =?us-ascii?Q?ap+nswkSJqmgaOuUXB0+iEF345VdeBo4C6faaK7BeKXlBK1UlTXPvx23ioVx?= =?us-ascii?Q?EcdONY+1S0=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2384;6:G+J5LTAmLT9lAw25YUkbyONILGkQryiKT4AeXRVPZl7gjzyqR1ixzoRr9c4kB2HYztHL0VQfAwR0lK8IFRlBealYzJ03/pu85EwC8qvPBa8IdSfdXtpTDX/lN8GDDru24X4ykr+abpr3UfGN8gmd6XW26eW9tqWC+IcnE3xkyaz6oWWEZq1inzehAPG3bEvdCWUZdzRG5/F2faIh1KCF3T1YrQeo2sHzqj00qcPvwuNuIEemWaM62NhQPfQfHZEnBYsepW0qVGS7knxucRrogo3wsS5oHLv3vfTrVEQ1nVY2RAOVuH7ngA03ACkXHaIu;5:8+GEt33pa3Nt+DOImYsNNsBF+5J7b7IAYPmnweVs/qE/sw/YpdzbMz3naXf3f0iaby0OzvoEOzVIIqhb23PQXqSNR0VWTxssSnXhw1uAbQpOtpnFpSgayZt+dEmC+HaAGB8vtXd35CyZ34lmrpgXUJ2Yl1OfOxZh1lR4xfo7hxc=;24:193zRI6OaXx6Ib1xB7uANGcnsuEbJSOfgbfX58VGZamspnfPMn99eQY1WSLv0QJ0dlE5zp08iXmnpfGYrpMVNyxi2HI4+krnt6iWSiS/OB4=;7:klJbTUNkYUjetNlj5bNCvR5D7z09/lSzON8YDfDhfQDVacIvULNtySLgaORRWB02+v4Y00ZvWRE8iV9x47eqerZXOoPa112Pa5AXbwwEf4khXZm1Gaohf7yaN5QhTfzMAG9JRtp+Lt7l/siNAo8CyHI739FfCq8+hPuXg4TQAStDQ4msqSlV8vTUd51/iw/CvduiS3HpxSWm6v0/LMuwcu6tEIrcn+Blnb6jEiFIsDYBwfP/ur+8vRjxJFEpe6T23blUdM8RhS3JXtlFlSlzew== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2016 21:44:22.9652 (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.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB2384 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bharat Bhushan An mc_io represents a mapped MC portal. Previously, an mc_io was created for the root dprc in fsl_mc_bus_probe() and for child dprcs in dprc_probe(). But the free of that data structure happened in the general bus remove callback. This asymmetry resulted in some bugs due to unwanted destroys of mc_io object in some scenarios (e.g. vfio). Fix this bug by making things symmetric-- mc_io created in fsl_mc_bus_probe() is freed in fsl_mc_bus_remove(). The mc_io created in dprc_probe() is freed in dprc_remove(). Signed-off-by: Bharat Bhushan [Stuart: added check for root dprc and reworded commit message] Signed-off-by: Stuart Yoder --- drivers/staging/fsl-mc/bus/dprc-driver.c | 5 +++++ drivers/staging/fsl-mc/bus/mc-bus.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c index f865d18..1a6bcc4 100644 --- a/drivers/staging/fsl-mc/bus/dprc-driver.c +++ b/drivers/staging/fsl-mc/bus/dprc-driver.c @@ -801,6 +801,11 @@ static int dprc_remove(struct fsl_mc_device *mc_dev) dev_set_msi_domain(&mc_dev->dev, NULL); } + if (!fsl_mc_is_root_dprc(&mc_dev->dev)) { + fsl_destroy_mc_io(mc_dev->mc_io); + mc_dev->mc_io = NULL; + } + dev_info(&mc_dev->dev, "DPRC device unbound from driver"); return 0; } diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c index a49186e..db3afdb 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -579,10 +579,6 @@ void fsl_mc_device_remove(struct fsl_mc_device *mc_dev) if (strcmp(mc_dev->obj_desc.type, "dprc") == 0) { mc_bus = to_fsl_mc_bus(mc_dev); - if (mc_dev->mc_io) { - fsl_destroy_mc_io(mc_dev->mc_io); - mc_dev->mc_io = NULL; - } if (fsl_mc_is_root_dprc(&mc_dev->dev)) { if (atomic_read(&root_dprc_count) > 0) @@ -810,6 +806,10 @@ static int fsl_mc_bus_remove(struct platform_device *pdev) return -EINVAL; fsl_mc_device_remove(mc->root_mc_bus_dev); + + fsl_destroy_mc_io(mc->root_mc_bus_dev->mc_io); + mc->root_mc_bus_dev->mc_io = NULL; + dev_info(&pdev->dev, "Root MC bus device removed"); return 0; } -- 1.9.0