Commit 77909691 authored by Dinghao Liu's avatar Dinghao Liu Committed by Mauro Carvalho Chehab
Browse files

media: camss: vfe: Fix runtime PM imbalance on error



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.

Signed-off-by: default avatarDinghao Liu <dinghao.liu@zju.edu.cn>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 60657880
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -1265,12 +1265,12 @@ static int vfe_get(struct vfe_device *vfe)

		ret = vfe_set_clock_rates(vfe);
		if (ret < 0)
			goto error_clocks;
			goto error_pm_runtime_get;

		ret = camss_enable_clocks(vfe->nclocks, vfe->clock,
					  vfe->camss->dev);
		if (ret < 0)
			goto error_clocks;
			goto error_pm_runtime_get;

		ret = vfe_reset(vfe);
		if (ret < 0)
@@ -1282,7 +1282,7 @@ static int vfe_get(struct vfe_device *vfe)
	} else {
		ret = vfe_check_clock_rates(vfe);
		if (ret < 0)
			goto error_clocks;
			goto error_pm_runtime_get;
	}
	vfe->power_count++;

@@ -1293,10 +1293,8 @@ static int vfe_get(struct vfe_device *vfe)
error_reset:
	camss_disable_clocks(vfe->nclocks, vfe->clock);

error_clocks:
	pm_runtime_put_sync(vfe->camss->dev);

error_pm_runtime_get:
	pm_runtime_put_sync(vfe->camss->dev);
	camss_pm_domain_off(vfe->camss, vfe->id);

error_pm_domain: