From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754472AbdEQNle (ORCPT ); Wed, 17 May 2017 09:41:34 -0400 Received: from mail-sn1nam01on0059.outbound.protection.outlook.com ([104.47.32.59]:9202 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750969AbdEQNl2 (ORCPT ); Wed, 17 May 2017 09:41:28 -0400 Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=caviumnetworks.com; Date: Wed, 17 May 2017 15:41:12 +0200 From: Jan Glauber To: Rob Herring Cc: Ulf Hansson , David Daney , Frank Rowand , "Steven J . Hill" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH 5/5] mmc: cavium: Fix probing race with regulator Message-ID: <20170517134112.GA6216@hc> References: <20170516093655.17746-1-jglauber@cavium.com> <20170516093655.17746-6-jglauber@cavium.com> <20170516133838.GA20659@hc> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [46.5.204.67] X-ClientProxiedBy: HE1PR1001CA0021.EURPRD10.PROD.OUTLOOK.COM (10.171.99.31) To BN3PR07MB2577.namprd07.prod.outlook.com (10.167.4.154) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 547514ad-0450-415a-16d7-08d49d2a6a54 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:BN3PR07MB2577; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2577;3:z8VP7uL5qIKpNx255X/naixxflZnvpkunsjWG17DBhyFgNxX/+khCppG53U6E9Tw30xjbs5Rolntdn7hHphACnLGDU8pQA/jczQSRDYYMe9LbasbzkMDArcQKkTZX3LYemtuiseB7tnVig/pXEBbBIImme4Xa6M6tiOfZmxtyZElymhZwTgrfG4t5ql7nGAR969liP/sFfRumMWU6S+INMUIPviQhelxbZlL3WT2t5oRFqlvATqgKees69qSHnmfegysnly4hOxo62WQYDbClJqoiOWr5sTcMwPKfF9I6tyd2me/nhat+INuzlf/7ijqYLpeqEU+XqCtF01itQd5qw==;25:4+BHHF3YT+n1iMztd8fPynvP0JUVYgh5kKijBIMdzhFSHI+tvVx4HKgn3hte4M5csP/KI7HO+e7aG9cmjbBgyDBGyDCS1iOaI/DQtykVi3ad8a9wy1bqj5OsvRhBv9dIChIfQJ3mQ6Roo4gxRjCjtTdTj2JV822HsVEt1nphREQKv4y5mPuTwrtG2qOn0dOxRXnJRjJxGwJRefIK2bHmMUxE2KEV9qs6EM628peoiDxVVUXmuRfAJJ7ufNZ+h80B0yvn8LaeznNo/Qgm3SKV7c85qQeyzpqaJ1Df3mF6KyaIf6uyLqkBXwo/JD+MnFTdzBiB6R9mos/P6MJDCMQ/XNLiMGW1jNUMfPju9pLIBVsxcqaNEf1IXH9KUoZU/1uP5T0MAupyD2afhorjkmrKt8Iye3CS5Vly8Rifayk/obFgiUnCTiItYWV1k2PkoEmNvA4ud7CDxeDE/ZKLepU1D/Q3VP3AM54b0q2GkyePvh8= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2577;31:+h/+ER5uNe1SLqfRUHAytDmhZBDKoei1pGMqOmW8/8a33RNnxO1VbbaXTlXBngpDrPwp91zTipsBxWSsf7Nm4geHC3/jKGqUmi/VAg+8bAQGykLfTUx8VLYo7Vk7mApaIVTM8QOPENj+MTiR5s0NryVsqS1aLbujjX4Z868jEwI+mHFlZY90efOr9SrYKzhvQaj8Aaa4rjqIXoSb0SSFCKJFiv4/suUdhb7gi4tgIu8=;20:bdZ37cil4JP5TiLnVTiy90GnoyHYV60Y1RNlxUrpNsCe9Ya5rubP1ZdE0ODD34HMshZPXahAlyuqUBxnAeOIvnVzLUO5fonXlHsBXS7hAhRfDvvAb4ERrxqFVVVR1x0+2sAJTUkF5yEagtIOjwOBHt2tJr/8ZaHB24rLLUWO6vT2zGvwn3rsCFPfW5ZBcdSt12u2jRaGo77wENSOUWC1WxjCUnBDO6tSVRX6DLBrHMkADO64pf/Glf63/lXHjE0dE22moCeSx3t8nphV9DRyWZQ2WnYUNJVeQSDCbjE+RdAMvHOESJZvCsBau51sQFfgNvPbwQw1OC+3IVfSLg+lVI5n6gz3aJQekjDGVNElRhE9X6lrgzuupk+0oqoETWR7D9lINXnyemfy2mzbwu51/h06KDSXLu7Pf+kgFnv2zhouoPRy9BV3R/+uydmmEPfOINGEX0NVZnTXh0YxXg9ezEX5ZZPdrs0b78HKRoRqzVkWAEYOY7zoK0O5vRt7WxZPkFA4w3U24s8Sy3ZV1AcjKw5KKGoMrUzcKEkkrL38QUUY2MghJRDA43ZsfHTgh++pfWIW6nkdsrs1OODFq6aMP/bB0AM6xxfmG/qW390uSA4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(6041248)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148);SRVR:BN3PR07MB2577;BCL:0;PCL:0;RULEID:;SRVR:BN3PR07MB2577; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2577;4:+9gfhmBRQzcsNQkLAiaaI7fFQmdMy/eNc/6blIotQRF07aY+noH9XgDQoDq0tfOqD9wHe1Y6tDvUN6DGa8bric4rDvFWYUTcupbOD7wAcvyaSa4CoHcwKq5BsAu1zO9gQOVbhW/C5clA6Q38ErNwIdDT4vJ2pEcY0zLEXseIM9KEduq9ljwqwnumd2kVsb4lNDkVeCyL5qAyR4UzObypXhxQyWCH/Dqv5xycUa/tqnUahUEIrfBvdxp063+paIpoIPC4KVdfc2xnLjh/HObI8Gxv2zHNiuuNLNZrIfuXVtrBUOHTGcFWP8YPp4mFG/XCU9f7ttBzxqeY9rwnyYwMvYXWwUdice3fQsiI0xgQ53Sa7wSyCiYaM7KkpxasTqzXSoskUuGxxmboCNqEV68HlU7Vfy7VekV0z5jiapzDGccbQX7zsR+FtD41dw440r/+VcYoz82gzkQw17kUb/w47UtugmwGTYhm7HiI+lpM9EexlLPkGNL4EpfE/gH4jkuDuXzbsy1En4deyaTCIg6XiLA/r2hu0HUhrvTM/SIpoO4q7gjICr5nE7cATPiEPNoFnrHhiHqZDK0CWe68/Os9XzTId6G2NAEybU7CsCJBeTOspmmjaK8ChZahS8WGAMLurJ3D28NmX6RYujDkYaBljVp3XiTd28fRpFSEnnUeqyXFJ7HFGivv7rsAeSWiWi2r6jfv4TDp+0YnGjeLD5gFy+NU1T7BEXOApQDE/GpMxswKTRpM+SjIMNTf+ba1KSvVB9hHLFUmIZEzM2ncPVi0WQ== X-Forefront-PRVS: 0310C78181 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39410400002)(39450400003)(39850400002)(39840400002)(39400400002)(377454003)(24454002)(478600001)(9686003)(54906002)(2906002)(72206003)(110136004)(6496005)(6246003)(38730400002)(83506001)(47776003)(33716001)(6666003)(229853002)(8676002)(81166006)(2950100002)(42882006)(3846002)(1076002)(55016002)(66066001)(53936002)(53546009)(25786009)(23726003)(305945005)(33656002)(76176999)(50986999)(54356999)(50466002)(189998001)(5660300001)(7736002)(4001350100001)(42186005)(93886004)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR07MB2577;H:hc;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR07MB2577;23:Axdvkzc51uwwi+1n6j/0Uj5NjM4YpDKiZSolcrqfq?= =?us-ascii?Q?Llh8niFIhvi9tFNEFchPAsFuljvtW83CrnkLgjjEXRuqE/PQLNEUqtwbSvA/?= =?us-ascii?Q?rYoM/k6A0f/l26y0QunNYeSJQzkC/AD+r8FFcVzt4SbPGOEHwy1RoPay7qUi?= =?us-ascii?Q?vsSE6z4iIue7FwvscW0q8JtPjYhx8uNxJW8+zwaWZTlPlf2LiPz8RdVYkHmQ?= =?us-ascii?Q?GZ+1yA2T9yp5tWYL0XbTx7BfdQI1NcjP+N+1TyN+Bjh8jseWJ3jA2faLBQ1K?= =?us-ascii?Q?YgtQOaBKO29vDKq9svEUtKoO2eh/rv+f9pgDRv4BcnxkRtGEdPW9v2ynCiig?= =?us-ascii?Q?HGVZklgog/b32yfA1JczFHaC8EawUpK5Of0OqPTyt+YmO/XqV3cL6zky/wgy?= =?us-ascii?Q?ef741FMqdd/Nm0MkAr/57jS1wo1K7gF72GupAJhYREs3FqY7v0iurR71jkDB?= =?us-ascii?Q?1/7APpbNmxR7tB46+0mCfSbs/ILd+c2DsGe/1x2T+HDtcJdPXojny1OfLOFf?= =?us-ascii?Q?F17twBoOm8VSOQAQeHJiDQIXsQjDSOj5iC1JGRI/h7tgoCCwOTn0x/fkNiJj?= =?us-ascii?Q?bGNx6fZVn2YorvdfihzUOSKr5dMvgr3giq+2hIDD3mREXy8eWJCp854UfUpo?= =?us-ascii?Q?N2kG6lrVxCLn1ZOl3PxdTsYCAdus1oaca28OG7GB3zlhWGluhyAx5sFPyljY?= =?us-ascii?Q?gc4RUS+DKitLoYRKB8R/T8oyfpaCI3IYpl2TYFPnSgMf4JtZvd/xgH/5prkA?= =?us-ascii?Q?K5yWu1xivPcMswysX1OJcA9KUrux0NRgaZEpPWlkds3zfZVjyUPFXqJxVAbZ?= =?us-ascii?Q?vQ7tmno9X/PSE9Bj0HgmG5YUDVuw2qmc8Sa0dX1jz6/Le4ya6DnvE+C3NCOu?= =?us-ascii?Q?6fUB2jgYNsxlXuQq9DMwGQHrHe56Fmgsy1BA87QCE0FDKsDgnFiyb8+3L+nR?= =?us-ascii?Q?vyZ4R/2D9v89ZX+s/yLAD8n6U9Sl62FoXs9mjHIL2jpiFhIbS+utaHvPvxLe?= =?us-ascii?Q?J7f1wIdCEquNb2AcbXigUWSpvqBcH66QsDuPdyrIE5JjEYd7PN59QeKm0O0G?= =?us-ascii?Q?cyzq1RWwqKRkj/07W0Qw/rxol/KXkuAJIiW+C4D+M0TMnD+IWxfQNrFuxw0b?= =?us-ascii?Q?PBdVLU05BSiyfMUdIjmlmGFR6z8rK9w6UH5HVrM1jlIKXi1w2xPMLc094sf/?= =?us-ascii?Q?UrSl/WlxveB2n6tFsbDtodjk8B4PRBn0P0v?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2577;6:sjAu9F8ka4EWmSsSiC5wTUqlDBdw1+pP4dq5SwuxErbCfGsNFpnwAl2Y6VbSoZY/XcqF0/QOfmwAtoToyROd7IeQzYeE0NwUiv/EyC8BNM2KShdLibq0RMLmu4ZAt83fVinKHcQxYwxAb5EGmty/bhvccrB7xzQ6aCHFuxa6/gWrsjhPeavP1DysMuDLZjh+R7Ttif/jvd5198jZbQcwqTc8Yk+7iMdK4HkVYQreleOzCFw9muB6HIJzifeWlophIoIclCJZPJV3UgYbAQgdYxnLkxhGEKkiiafwfTog2Yxi0nuw7OzkSvbM/cpfbjWFKZb+aMzGkU1WFzA5+Fa5qrsNeqpDNCnFPtqHPYeAXL9DSx+BHWJckzrgjZlTXJkD8PjN56MYnKm1PGcLBiHO3S7ACbDDWFmZ7bKiJazj1x19l0AsKSS9jiMJg8q2rzuHM2DTkB44/hDoFL/57d2e5SP5TKYm2frvzOVoSimny78ekqYbokN0Ltg9zfcz2vVwR/3KfxP5OGWsIwFkNRUDVQ==;5:vaPO9JnlH7NiX7g1zSkacCt64Z3rwPm739tvJusEXdB2Af/aBzN0d/Sr1lA+854eI9SH3KsH96jOBbyQcDgApsBQ754pVBNatSf3S//T36XhAPJdIZ68VIPsL54g5Hjk/Qpg/hInRLGjmKPfzYZU1w==;24:WULNevs74DFSFCqWQ5JU/UYkK9lOVkEg8D8pwKenTVwnvQxBzd0vplMuMGNa4OlcomX9jyaG8KyTgOr+dfbPkSRj1Lv92bkdQUYflnsF9w4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2577;7:O640zFyPWDmLL6YwgK7otY+g11D9RfdEdJ8mM99hKqx44xBif0Jt34KXlZuKSPg3fZWafaLgmGbxPoUGm0cxBgXPWZeY0bEIUntywBkkTvfXE6d+uluU2fo2klz72Q5+9B/L97Wogg9aE+xNP+H8u8bfVSs6JT80nRU12KxBQrM1fZFT91u4c9IRlNRSK61pzHkkE5FAZCzGFptKD0WW9NXzzE/8v+szXxzAJfOWXvAc8p+Nx8mjLHELySKfKr5i0+VUacDr8ABS7byTKtzeClGj/XMFIIPR4quDUu781GNHOoKFQITAPwHyU8sDApwPSVHcCXhc2ReWiIGbPp3tXg== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2017 13:41:24.7942 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR07MB2577 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 16, 2017 at 09:37:48AM -0500, Rob Herring wrote: > On Tue, May 16, 2017 at 8:38 AM, Jan Glauber > wrote: > > On Tue, May 16, 2017 at 08:07:50AM -0500, Rob Herring wrote: > >> On Tue, May 16, 2017 at 4:36 AM, Jan Glauber wrote: > >> > If the regulator probing is not yet finished this driver > >> > might catch a -EPROBE_DEFER. Returning after this condition > >> > did not remove the created platform device. On a repeated > >> > call to the probe function the of_platform_device_create > >> > fails. > >> > > >> > Calling of_platform_device_destroy after EPROBE_DEFER resolves > >> > this bug. > >> > > >> > Signed-off-by: Jan Glauber > >> > --- > >> > drivers/mmc/host/cavium-thunderx.c | 4 +++- > >> > 1 file changed, 3 insertions(+), 1 deletion(-) > >> > > >> > diff --git a/drivers/mmc/host/cavium-thunderx.c b/drivers/mmc/host/cavium-thunderx.c > >> > index fe3d772..257535e 100644 > >> > --- a/drivers/mmc/host/cavium-thunderx.c > >> > +++ b/drivers/mmc/host/cavium-thunderx.c > >> > @@ -137,8 +137,10 @@ static int thunder_mmc_probe(struct pci_dev *pdev, > >> > continue; > >> > > >> > ret = cvm_mmc_of_slot_probe(&host->slot_pdev[i]->dev, host); > >> > - if (ret) > >> > + if (ret) { > >> > + of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL); > >> > >> What if this fails after the 1st iteration of the loop. It's only > >> cleaning up the current device. > > > > The platform device is just a dummy device created directly before > > cvm_mmc_of_slot_probe(). So there is no need to cleanup anything else. > > So if you have 2 slots, the first slot probes successfully and the 2nd > slot defers, then you only need to clean-up the 2nd device/slot? Looks > to me like you are leaking the 1st device you alloc. OK, got it now. My assumption was that your scenario can't happen in reality with EPROBE_DEFER. > > > > As far as I've seen it the platform code 'tags' the nodes it already > > used, but I need the same node to be parsed again on -EPROBE_DEFER. > > > >> Use devm_of_platform_populate or > >> of_platform_populate/of_platform_depopulate instead. > > > > I'm not sure one of these will work here. > > Those functions loop over child nodes and create devices. You are > doing the same thing. You'd just need to create all the devices first > and then probe them all. I'll take a look at devm_of_platform_populate then. If I can use it it will solve the leak issue. thanks, Jan > The whole structure here with the dummy devices and how you are > initializing things is screwy. IMO, you should be creating actual > drivers for the dummy devices. > > Rob