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; - pm_runtime_put(camif->dev); err_pm: + pm_runtime_put(camif->dev); v4l2_fh_release(file); unlock: mutex_unlock(&camif->lock); -- 2.17.1