media: renesas-ceu: Properly check for PM errors

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 dd8088d5a8 ("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>
Acked-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Mauro Carvalho Chehab 2021-04-23 17:03:23 +02:00
parent 45e75a8c6f
commit 220955ec3c
1 changed files with 2 additions and 2 deletions

View File

@ -1099,10 +1099,10 @@ static int ceu_open(struct file *file)
mutex_lock(&ceudev->mlock); mutex_lock(&ceudev->mlock);
/* Causes soft-reset and sensor power on on first open */ /* 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); mutex_unlock(&ceudev->mlock);
return 0; return ret;
} }
static int ceu_release(struct file *file) static int ceu_release(struct file *file)