On 22/05/2020 10:29, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > when it returns an error code. Thus a pairing decrement is needed on > the error handling path to keep the counter balanced. > > Also, call pm_runtime_put() and v4l2_fh_release() when sensor_set_power() > returns an error code. > > Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> > --- > drivers/media/platform/s3c-camif/camif-capture.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/media/platform/s3c-camif/camif-capture.c b/drivers/media/platform/s3c-camif/camif-capture.c > index 9ca49af29542..d42d9cfaf674 100644 > --- a/drivers/media/platform/s3c-camif/camif-capture.c > +++ b/drivers/media/platform/s3c-camif/camif-capture.c > @@ -552,11 +552,9 @@ static int s3c_camif_open(struct file *file) > goto err_pm; > > ret = sensor_set_power(camif, 1); > - if (!ret) > - goto unlock; This is wrong, now this will call v4l2_fh_release() as well on success. This needs to be reworked. Regards, Hans > > - pm_runtime_put(camif->dev); > err_pm: > + pm_runtime_put(camif->dev); > v4l2_fh_release(file); > unlock: > mutex_unlock(&camif->lock); >