From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754943AbdERJjk (ORCPT ); Thu, 18 May 2017 05:39:40 -0400 Received: from mail-by2nam01on0076.outbound.protection.outlook.com ([104.47.34.76]:40829 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751548AbdERJjh (ORCPT ); Thu, 18 May 2017 05:39:37 -0400 Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=caviumnetworks.com; Date: Thu, 18 May 2017 11:39:24 +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: <20170518093924.GA27614@hc> References: <20170516093655.17746-1-jglauber@cavium.com> <20170516093655.17746-6-jglauber@cavium.com> <20170516133838.GA20659@hc> <20170517134112.GA6216@hc> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170517134112.GA6216@hc> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [88.67.130.225] X-ClientProxiedBy: DB6PR0202CA0018.eurprd02.prod.outlook.com (10.169.218.28) To CO2PR07MB2582.namprd07.prod.outlook.com (10.166.201.21) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO2PR07MB2582: X-MS-Office365-Filtering-Correlation-Id: 5099efaa-2300-48c5-0ff4-08d49dd1cb33 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CO2PR07MB2582; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;3:gnkT7FapTs424BTJxd5VC4uEB72Cril5qLejgKFnrI3Yst6XwOaut3IJP4MgFaTcvru3Cau6Ef/EbiIgl+/rj0foUEbjnSQHdWivf4JRp7aIUOorMD3Mh/tpcL3kEzLVRpyjNsJjc+Ij+/8frNTmUOrfkM4Z8huWcdnCwR4dcHmxBPdnTK1lgsZWqc3hfizBPweGESkGEjT8K+81ymVIs7cTFLFByUBRgPBzTdLeAUQgf3lzm2p3TOubpHuh+7vzCwplp1VOyOqgjnbfJzKKgFOwOLUoiLyDTtIr8Zq7Ual+G6L83NGc6RMzUgi0BY5etzAAZTlPptzBUz+jUXlNHw==;25:1AIvRzGjECdVFAYEvXVH3uZqDSi0d++8nn/U4C5YrD7/kSwOtR8wZ1wMJJ1x5GE/2ycHif6E9TFXqaaEVJsvdbVbC35uBF75+tQNjnnpcxs4wDJKA7+h/1Bp6zA6UZIvNVzgA2pEUxgcizO/nbDpPDJBGX/OYF/VjgK+76uoPHdIdJVL1HxcByYURKEVajhRXl0o3UifItpjhHgZp5KxOq1tBlzN7WBGsoY4pXMdkU4/a1jetlLnAKJLAltFPEBPxfdeTak+JUb+qWiN1530RPrWtAbPqntdoJIYVYUgKl0Gy2hCIPznGtb3Hx0OSq5xCfw1rcgLNDWnD3vk8HnYRgPOO1+IuxWhNBct26SbEOrWVZcKFkwTA8yPlHr5ZycBPw1AxwJNshEEVM3JH/XsBg2H2RN6ze96TNtVb67sNGKlcjl+Ki1m65f0ckODONA2ZgZX+xuaxNPuaJIFaA0U4ohgKixwme2296C3my3k1oU= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;31:8qMBoCaT41zwwGHM44PluizvzD0IL27KB3p3EvxuCRSMeF+Srvjumt9ffpJkBwHZPUYz5iYG84rv6v9d65LgXskHXcVJqf5XyEYpXjDPZKIoeR1NuZz1nVVmZ5lDP2N54Dgf32KE5l1zo39wsG4Wr+ANJilYrVTTQPC/NMsYctdknlUhwzm7yKXa6N3jAjzKW2ppGhlgcmK0ex9lIcM+grfn7/9LgbO2gK9tcdOckeU=;20:17q2Rwv8t/LCVEcCjDiVO15ZHY0EaGNqdCu4U6xqbGR8JprfmTb3hsHzgVZTbGuS6BbrJB2DBjtn2OxisJ44L4tr3eFI6iT87+A1CUytGsmLpWZ3K/KDusskQJ+ItM+y1vaxLrwD3k/cY2lwnhvKlwi+TTy/l3IDceAsBP06rGHstz1eQevjI77VT2XkypG2Np9CnBaNBA3j9f6UqdcqzgAM5eZ6QP+YCTbsmNonpJtaq1RGlCEa7ad0Yz7AD4gHaAL/0V3Y9Dkgi0HjAgjE+bzhx5FQ/K0FLjOuB3cI05wDib3SAsE2KbugUxRASPwBtksSSEk4DfKOW/5UJXAz8eKL01yqXQGuHj6V3jwJ2EY2BNvTeyokaQE6njaq81or+ya6E6m2KHCZQ30uLmtrKfiNtFgpBsdwqgsUATd5vqwqAgJJXoggLOATpG6YMbhgJs55RjzNNClBFaatoL3CQOh2Wep3Dj7UkUhDnLv8jTUcrk+A8eWIdVMrnqPdn5Ornyu9QW5oSJizCR8N1J49yOq/VeXyyPh5pivTp5OgnDfgxaXO/cr7n4WQbzrikJj+d2DEi+62zPxBI6tfvFCLjj6/pqcrlGnasUAsgyDV3GM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148);SRVR:CO2PR07MB2582;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB2582; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;4:87ODEX6Qu4L7pmeRCHqJdPR/2RN5b+0xgLEwCVqt1iB6uccOYOykaVTG8fUZPUNnXaK+H8BVqgMC5RDMYrZ2ixnAwIuzhAe2MQk7L8kE/hTj3ZNLhmbuqX2X0IcxSDV0b0gKVyJ1ABR7WzXTzgHBTtxtB69Og+teMtY9/0m7ywdQ78LoB5nXJZlEfcfXwkCieZzGuqdMz4m5Hzsrg0tkzUorD0zx20TilHlh95kZlAJJoRrtIEADLmxT0HxLFOikFTfsin8eArkkY8iMm39hPGpNzLiyMYqjcvrGPQmu3smNoKLgKvvdrNrHfbxO07oUo+x4EGVStx+u56AEUPQPYm67pIc9B+LJaNZcbQ5KpWaXEnFpMdduB9GYEA3jsDRLqS2DMEG0CgIKpEhxLFkp+lXjxxJHd/Dqsrcs7fjFuZwijxI41pwKpRgxzd1aF33HAzuuKtQ+7Bz4KoDx2qrAtm9gvSS2r4p1tDKf6qto0N0ZKzu10JvAWQn7sTGLKYXs65+god762JLYzxWU1RXDWnAov7rzptHFwxneYjEcvKuzkd0FN3IedvMx7BGoW/9x5EzWPtFOZU72o+DF9R9uEEzT3tNjQgj2N45L2kveoHhN8zf4eRfZ13SS3ZCVB4aOIhCUZ6A4G28aYjvBNEJqOa1BlMOUuX4xFO8Ghcg/yLYAnkNTFlVZcA1FMUICh+1n/6tmHD5YypxjvqbsRUMmURIRuicAgpPHM8oPB7BG9hUGbQ+zdBGYwge7wRWqpVfhKQg7PEd/JwQAyR9nyymLgQ== X-Forefront-PRVS: 0311124FA9 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39450400003)(39400400002)(39410400002)(39840400002)(377454003)(24454002)(229853002)(54356999)(76176999)(50986999)(4326008)(38730400002)(6496005)(110136004)(478600001)(6246003)(50466002)(53936002)(25786009)(53546009)(33656002)(33716001)(42186005)(66066001)(54906002)(4001350100001)(72206003)(7736002)(42882006)(2950100002)(23726003)(8676002)(6116002)(3846002)(189998001)(93886004)(6666003)(5660300001)(1076002)(9686003)(55016002)(81166006)(83506001)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2582;H:hc;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2582;23:ZdhGkmcNXAfm0frzYmY0o1ILt+eDtxJZ7Nxxmt/Z1?= =?us-ascii?Q?4WQrHzOH6FtcZt/QC7YcwkhjvsHx2lrhUKpXSUvHvpPkyslYtq0+m1CfzjLS?= =?us-ascii?Q?Zk9tQ3blIa7ouy6D9mogI42QV2QtDkevYM+cIF3raruxa9UES9noPhkwreyV?= =?us-ascii?Q?LNhfcA+NS8vUzuAj0SjBkl00fcNTkdClNtsIUo2CCts8ClJYSsJQExQLQPqw?= =?us-ascii?Q?npASLfMHV8pCZa4RWLyyFwVk9h7naj97UPso1m4omFiHe+r6Y/bYlaqCSfuu?= =?us-ascii?Q?szwyq8DDfFWXQjKnfJi94K53iFP8anTiCBu0NnrU+bE9k2hhcjIvh/DH+cTX?= =?us-ascii?Q?SYgMWdhTacRLBb8G6862URlr1rA/Ce0nqjLqnvD9JeZY34G9iFdHb1UD1big?= =?us-ascii?Q?O2YPk6ZJuPVF/sX7OgSyq83nUOQO5yXxJ9ijMCQ7zbQ81fo0l4ksoBqJGh9W?= =?us-ascii?Q?UtyGv7GAJFpVYL6XTFvx1lu+IGYqFnIG2T+kWSxWq8XIa4UeToxGEUvtobjH?= =?us-ascii?Q?0gJM/Oz1UJp4kZmyI3LQQHc7YAkEIHp5sUIgDxyKS988wIiZFLW7S/bqDEPD?= =?us-ascii?Q?gnnktKDE/7SMRxTGn3C5UQ8l1LvtYH1QP4JgT2kmF6dSJBzpDXXymMpUMvSp?= =?us-ascii?Q?16vkiGfKIaZ3mvNmEVBsYuAN5wPeC4+kAW+RrIMwsqqXjdU5WmJNV2a7sLwN?= =?us-ascii?Q?PKIxjdINwaJ80zR8NwNQ1aMnnNWmQV477btTzOFi1eEOLBr+PWPR+JgkhvW7?= =?us-ascii?Q?8qwK9CvuKt8ZV3l35pKSJxuRk2P5OJZEvC6fEpQPpOQ0IswJe/LZ+cmRuhJ6?= =?us-ascii?Q?EdKnNXLrFqnN4nY5am/fzZA1IYZlXs0mfdtkxmDiLMkPuOWRfir5zAAMJbcV?= =?us-ascii?Q?I+X4PFVnOJE0K+ptrEd7p+fGrYzXC1RdZOVrcwlk1JPewrZZ7j9sbSdSVVDy?= =?us-ascii?Q?Q8JatwUnoLfTNPKCw7vKsFvAToudpcfrOhpmJDNQx++ad4R75sA+c+mPfD/j?= =?us-ascii?Q?KkE8lwB5IUZTrCgDeGr4SBOjMPoAjjQvQ8TLSWuev9tSLll6NnIObdCsuXuk?= =?us-ascii?Q?eJha3xjS1im+Wk3AfksUv7ZKLPAg4dbcN0L6sGZ+xg4Ii2LbuSerekkFytiA?= =?us-ascii?Q?X+StqXXQBJUsVhauMSxZoP8NFUjWGUhFZnJP77beqiH4yia3QriHoqDA8zwY?= =?us-ascii?Q?xjGGTbWlvwvgOY=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;6:gD4ZNXvn2bHXjKpHy2VLB3nlrOVCHwxRw2uGpJZF9sECS6jaIBoijMVhHQr2Gxt3P8L3Ed75Gy7BM9gsShHmu6+MjPhYUP5RGzrr8Uus+Lj3bZ+Jx8kCczno6kL3zCqMTZxpZANQEyFtunJAxRhdFLZ3Fv9W+rJr4ZV8hYrZBFcu5oi6g0isMSsHqEMvu62hcnfugNTvFqsT6Q5uIs4ykjV+XC3G+5CI/P478X1C/k6FidZAcz3uah/3UhKT2CYFzGifwNGgTSR057SDqiyiwm/f+jCOb2MqtIiNzRbYNGLfgaiLMglHjqitoy/Cm8gkY/5luWkOPPc6JNVgPIjM6GOfym6wQsFmNn5i657dkLk9o4LQo5iZsWWz87L/pGCH8hum0ZJaCoVITqzLgnjo6lemaahxMkdJTKUGldh6SqbKNqSN5s4YXYTaPfzOD4ojEX1bKzlESV+tDC7HajTkvLJtkADn5PUf22BUXweO4KCkGEYuPlM5u57HpIglbwacsrtpIJBMlFEo1XzoSuojHA==;5:zVhPCmHoENtNluhvm/PISp+V9+7M5k0VgSDM9cER1H8fk55q1zzP3jZbaInCNfLKaTUMN3Gd8P1F3VGtCQxBIL8zA6YQdNWgSA99xyXS2p5EflQcvNnK57gsXAB8AstpQmX2os4RR8KX3HdRREcDzf96TUXc3QTxCxX+phrMeKg=;24:jT+peH5ewjlDlrC6EvuonsrhfTQlqOY/e7/tf42aX/s5biQHEPbNSvA4uwk5hVOjo7pTQ06SIYqE6gELey5P0RZzhoeN8gmSHLQi2IgKQhk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;7:WyERO/0NrVmFxmlYQ9lPNXOvmDCsDuwiPPeCFpUXNCGaZDNhAs1CLoNqWReOw/a96C8kUwjKplyoC3fxP4bW6O1FBERG0AfUFcWh9LZZZKAKPJQcD8D6pc2Wg5igNH0ZcEKvWsj/Na70ICKXgMZmu/KFY4WjPg7rOvbGamOKp9azidp/694j2oR9jx/Ome5gbm64qb4mz3p/+bHw5qcallw5Mo6aBXQ1EYSWMFykXEd5zPIrDwgH5iNk1C7zlQTZtT9LbKY4qhPI/ipmm4l6P0n3JcsxWUi/YazEA3uhF/hg6dyI7zZE9Li6yasaXJlTEr1+Wxw/7dMnN9CDuJh58Q== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2017 09:39:32.8372 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2582 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 17, 2017 at 03:41:12PM +0200, Jan Glauber wrote: > 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. Using [devm_]of_platform_populate/of_platform_depopulate would require a platform driver with its prove/remove functions. I don't think this would make the driver easier to read as we would then have a platform driver within a pci driver. If it is possible to export the of_platform_device_destroy() I would prefer to fix the leak and stay with of_platform_device_create. --Jan > 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