On Wed, 28 Apr 2021 16:51:33 +0200 Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> 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. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> LGTM Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- > 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)