Skip to content
/ linux Public
forked from torvalds/linux

Commit

Permalink
media: camss: vfe: Fix runtime PM imbalance on error
Browse files Browse the repository at this point in the history
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: Dinghao Liu <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
dinghaoliu authored and mchehab committed Jun 23, 2020
1 parent 6065788 commit 7790969
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions drivers/media/platform/qcom/camss/camss-vfe.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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++;

Expand All @@ -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:
Expand Down

0 comments on commit 7790969

Please sign in to comment.