Message ID | 20200522082915.4731-1-dinghao.liu@zju.edu.cn |
---|---|
State | New |
Headers | show |
Series | media: platform: s3c-camif: Fix runtime PM imbalance in s3c_camif_open | expand |
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@zju.edu.cn> > --- > 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); >
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; - pm_runtime_put(camif->dev); err_pm: + pm_runtime_put(camif->dev); v4l2_fh_release(file); unlock: mutex_unlock(&camif->lock);
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@zju.edu.cn> --- drivers/media/platform/s3c-camif/camif-capture.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)