From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28017C43461 for ; Wed, 5 May 2021 12:22:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EB6A1613BA for ; Wed, 5 May 2021 12:22:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233172AbhEEMXB (ORCPT ); Wed, 5 May 2021 08:23:01 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]:3018 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232896AbhEEMW4 (ORCPT ); Wed, 5 May 2021 08:22:56 -0400 Received: from fraeml736-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4FZwfc1vhcz6yhqR; Wed, 5 May 2021 20:16:08 +0800 (CST) Received: from lhreml710-chm.china.huawei.com (10.201.108.61) by fraeml736-chm.china.huawei.com (10.206.15.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 5 May 2021 14:21:56 +0200 Received: from localhost (10.52.120.138) by lhreml710-chm.china.huawei.com (10.201.108.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 5 May 2021 13:21:55 +0100 Date: Wed, 5 May 2021 13:20:16 +0100 From: Jonathan Cameron To: Mauro Carvalho Chehab CC: , , Krzysztof Kozlowski , Mauro Carvalho Chehab , Sylwester Nawrocki , , , , Subject: Re: [PATCH 23/25] media: exynos4-is: fix pm_runtime_get_sync() usage count Message-ID: <20210505132016.000078b5@Huawei.com> In-Reply-To: References: Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; i686-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.52.120.138] X-ClientProxiedBy: lhreml725-chm.china.huawei.com (10.201.108.76) To lhreml710-chm.china.huawei.com (10.201.108.61) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 5 May 2021 11:42:13 +0200 Mauro Carvalho Chehab wrote: > The pm_runtime_get_sync() internally increments the > dev->power.usage_count without decrementing it, even on errors. > > On some places, this is ok, but on others the usage count > ended being unbalanced on failures. > > Replace it by the new pm_runtime_resume_and_get(), introduced by: > commit dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter") > in order to properly decrement the usage counter, avoiding > a potential PM usage counter leak. > > As a bonus, such function always return zero on success. So, > some code can be simplified. > > Reviewed-by: Sylwester Nawrocki > Signed-off-by: Mauro Carvalho Chehab Might be nice to call out the two odd cases below. > diff --git a/drivers/media/platform/exynos4-is/mipi-csis.c b/drivers/media/platform/exynos4-is/mipi-csis.c > index 1aac167abb17..ebf39c856894 100644 > --- a/drivers/media/platform/exynos4-is/mipi-csis.c > +++ b/drivers/media/platform/exynos4-is/mipi-csis.c > @@ -494,7 +494,7 @@ static int s5pcsis_s_power(struct v4l2_subdev *sd, int on) > struct device *dev = &state->pdev->dev; > > if (on) > - return pm_runtime_get_sync(dev); > + return pm_runtime_resume_and_get(dev); > > return pm_runtime_put_sync(dev); > } > @@ -509,11 +509,9 @@ static int s5pcsis_s_stream(struct v4l2_subdev *sd, int enable) > > if (enable) { > s5pcsis_clear_counters(state); > - ret = pm_runtime_get_sync(&state->pdev->dev); > - if (ret && ret != 1) { Perhaps add something to the description on this less common case? > - pm_runtime_put_noidle(&state->pdev->dev); > + ret = pm_runtime_resume_and_get(&state->pdev->dev); > + if (ret < 0) > return ret; > - } > } > > mutex_lock(&state->lock); > @@ -535,7 +533,7 @@ static int s5pcsis_s_stream(struct v4l2_subdev *sd, int enable) > if (!enable) > pm_runtime_put(&state->pdev->dev); > > - return ret == 1 ? 0 : ret; > + return ret; > } > > static int s5pcsis_enum_mbus_code(struct v4l2_subdev *sd, From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A819FC433B4 for ; Wed, 5 May 2021 12:23:47 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AADD06139A for ; Wed, 5 May 2021 12:23:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AADD06139A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=Huawei.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=FeuG4Cfh2yaDgQbkRn94iPF7TEjrjg5+tboewyMl9fw=; b=UH/iIT+4nFaqk+46sgyfqx8BG /ly5GOsreGVb5xZuGA8xkzIh6Y4K8NGBWiBoVRUGoa/4PvAoPN2JQCiylEnAA3LFB+gxsg4eVfJIg 6/YxK9Ys1Doy54S0jwuZLaiGqd+/yqJufVaNo44C7epWRXVN3GM0ihXBuuIB29C0P9rxZeP/uAoa0 vU9XwcvOiMz27F0wKJdWP4QEWwbNuToHUh+1yKTZ1bB1sO4xBh3j3de7f//59FsDWr1Rkp6IJ5J1t IzHXL5CoW5P2G11s2c+9NZcDwPPP49nvX/jdrooL5MpuNEL3BVwDBGBi/CBXm/9U1sGA6oc4bPYPp ejh0Nf8jA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1leGXa-001Aq8-T5; Wed, 05 May 2021 12:22:11 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1leGXV-001Apv-37 for linux-arm-kernel@desiato.infradead.org; Wed, 05 May 2021 12:22:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Subject:CC:To: From:Date:Sender:Reply-To:Content-ID:Content-Description; bh=ajUTpkK0FOAdE4jQz0MQHH90eQo/DCEyOVhGZg5XQQo=; b=bvxDP1RzckgxgfRr3qw09SCbjt 3atuYRjZAMqqtHfZHV1qHxCrWotRvaZ8jE5DGKBPSkkFbtKtfdMTGMFrgrHFiHKr15A5b18JsGaEr TOXnolB79I78MI/WVjLAv8nnRTkr2h4JxSR+606GyP1kNxc+kwQd9lSMs/KDH8IveIFnu5neMOCLB Jddn5f+lF+SFUKDh81Ve6qHqQKwS7JhlKhzwjdMQLGRiC5S1WeRUEh+QIKOkTiHFfnVn6V9/zuLBu 9Kg2Jx3vmCOXXU1g+YLNjUsMSZhk3p/X8GL94rG5B7ZlpB+YB08MyokxH4IkP4/KbRDmYPAi2x5Jn 7CI0Ha6A==; Received: from frasgout.his.huawei.com ([185.176.79.56]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1leGXR-004jkl-1d for linux-arm-kernel@lists.infradead.org; Wed, 05 May 2021 12:22:03 +0000 Received: from fraeml736-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4FZwfc1vhcz6yhqR; Wed, 5 May 2021 20:16:08 +0800 (CST) Received: from lhreml710-chm.china.huawei.com (10.201.108.61) by fraeml736-chm.china.huawei.com (10.206.15.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 5 May 2021 14:21:56 +0200 Received: from localhost (10.52.120.138) by lhreml710-chm.china.huawei.com (10.201.108.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 5 May 2021 13:21:55 +0100 Date: Wed, 5 May 2021 13:20:16 +0100 From: Jonathan Cameron To: Mauro Carvalho Chehab CC: , , Krzysztof Kozlowski , Mauro Carvalho Chehab , Sylwester Nawrocki , , , , Subject: Re: [PATCH 23/25] media: exynos4-is: fix pm_runtime_get_sync() usage count Message-ID: <20210505132016.000078b5@Huawei.com> In-Reply-To: References: Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; i686-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.52.120.138] X-ClientProxiedBy: lhreml725-chm.china.huawei.com (10.201.108.76) To lhreml710-chm.china.huawei.com (10.201.108.61) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210505_052201_394735_34FAF1EF X-CRM114-Status: GOOD ( 18.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, 5 May 2021 11:42:13 +0200 Mauro Carvalho Chehab wrote: > The pm_runtime_get_sync() internally increments the > dev->power.usage_count without decrementing it, even on errors. > > On some places, this is ok, but on others the usage count > ended being unbalanced on failures. > > Replace it by the new pm_runtime_resume_and_get(), introduced by: > commit dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter") > in order to properly decrement the usage counter, avoiding > a potential PM usage counter leak. > > As a bonus, such function always return zero on success. So, > some code can be simplified. > > Reviewed-by: Sylwester Nawrocki > Signed-off-by: Mauro Carvalho Chehab Might be nice to call out the two odd cases below. > diff --git a/drivers/media/platform/exynos4-is/mipi-csis.c b/drivers/media/platform/exynos4-is/mipi-csis.c > index 1aac167abb17..ebf39c856894 100644 > --- a/drivers/media/platform/exynos4-is/mipi-csis.c > +++ b/drivers/media/platform/exynos4-is/mipi-csis.c > @@ -494,7 +494,7 @@ static int s5pcsis_s_power(struct v4l2_subdev *sd, int on) > struct device *dev = &state->pdev->dev; > > if (on) > - return pm_runtime_get_sync(dev); > + return pm_runtime_resume_and_get(dev); > > return pm_runtime_put_sync(dev); > } > @@ -509,11 +509,9 @@ static int s5pcsis_s_stream(struct v4l2_subdev *sd, int enable) > > if (enable) { > s5pcsis_clear_counters(state); > - ret = pm_runtime_get_sync(&state->pdev->dev); > - if (ret && ret != 1) { Perhaps add something to the description on this less common case? > - pm_runtime_put_noidle(&state->pdev->dev); > + ret = pm_runtime_resume_and_get(&state->pdev->dev); > + if (ret < 0) > return ret; > - } > } > > mutex_lock(&state->lock); > @@ -535,7 +533,7 @@ static int s5pcsis_s_stream(struct v4l2_subdev *sd, int enable) > if (!enable) > pm_runtime_put(&state->pdev->dev); > > - return ret == 1 ? 0 : ret; > + return ret; > } > > static int s5pcsis_enum_mbus_code(struct v4l2_subdev *sd, _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel