From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754116AbbHFAGs (ORCPT ); Wed, 5 Aug 2015 20:06:48 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:42254 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753899AbbHFAGq (ORCPT ); Wed, 5 Aug 2015 20:06:46 -0400 Date: Wed, 5 Aug 2015 17:06:45 -0700 From: Greg Kroah-Hartman To: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= Cc: Mark Brown , linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: Re: [PATCH] base/platform: assert that dev_pm_domain callbacks are called unconditionally Message-ID: <20150806000645.GA2316@kroah.com> References: <20150721144100.GU11162@sirena.org.uk> <1437491315-2370-1-git-send-email-uwe@kleine-koenig.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1437491315-2370-1-git-send-email-uwe@kleine-koenig.org> User-Agent: Mutt/1.5.23+102 (2ca89bed6448) (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 21, 2015 at 05:08:35PM +0200, Uwe Kleine-König wrote: > When a platform driver doesn't provide a .remove callback the function > platform_drv_remove isn't called and so the call to dev_pm_domain_attach > called at probe time isn't paired by dev_pm_domain_detach at remove > time. > > To fix this (and similar issues if different callbacks are missing) hook > up the driver callbacks unconditionally and make them aware that the > platform callbacks might be missing. > > Signed-off-by: Uwe Kleine-König > --- > Hello, > > I didn't see any breakage without this patch, but it looks wrong the way > it is. > > Best regards > Uwe > > drivers/base/platform.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 063f0ab15259..62debf4a1348 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -517,7 +517,7 @@ static int platform_drv_probe(struct device *_dev) > return ret; > > ret = dev_pm_domain_attach(_dev, true); > - if (ret != -EPROBE_DEFER) { > + if (ret != -EPROBE_DEFER && drv->probe) { > ret = drv->probe(dev); > if (ret) > dev_pm_domain_detach(_dev, true); > @@ -542,7 +542,8 @@ static int platform_drv_remove(struct device *_dev) > struct platform_device *dev = to_platform_device(_dev); > int ret; > > - ret = drv->remove(dev); > + if (drv->remove) > + ret = drv->remove(dev); > dev_pm_domain_detach(_dev, true); This causes a build warning :( Please fix. thanks, greg k-h