Re: [PATCH 14/25] media: renesas-ceu: Properly check for PM errors
From: Jacopo Mondi <jacopo@jmondi.org>
Date: 2021-05-05 09:55:47
Also in:
linux-renesas-soc, lkml
Hi Mauro, On Wed, May 05, 2021 at 11:42:04AM +0200, Mauro Carvalho Chehab wrote:
Right now, the driver just assumes that PM runtime resume
worked, but it may fail.
Well, the pm_runtime_get_sync() internally increments the
dev->power.usage_count without decrementing it, even on errors.
So, using it is tricky. Let's 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")
and return an error if something bad happens.
This should ensure that the PM runtime usage_count will be
properly decremented if an error happens at open time.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>Looks good! Acked-by: Jacopo Mondi <jacopo@jmondi.org> Thanks j
quoted hunk ↗ jump to hunk
--- drivers/media/platform/renesas-ceu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/drivers/media/platform/renesas-ceu.c b/drivers/media/platform/renesas-ceu.c index cd137101d41e..17f01b6e3fe0 100644 --- a/drivers/media/platform/renesas-ceu.c +++ b/drivers/media/platform/renesas-ceu.c@@ -1099,10 +1099,10 @@ static int ceu_open(struct file *file) mutex_lock(&ceudev->mlock); /* Causes soft-reset and sensor power on on first open */ - pm_runtime_get_sync(ceudev->dev); + ret = pm_runtime_resume_and_get(ceudev->dev); mutex_unlock(&ceudev->mlock); - return 0; + return ret; } static int ceu_release(struct file *file) --2.30.2