summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHungyu Lin <dennylin0707@gmail.com>2026-06-08 08:17:20 +0000
committerBryan O'Donoghue <bod@kernel.org>2026-07-30 10:04:17 +0100
commitf87d7eda07fca21efe4b96169ae59007db46e60e (patch)
tree34fb15f8dcf3f2512f3ce4a560bfde6f4bf12799
parent460d3257a6dffc7f0bf58009daeb7e0b6eb2d9d3 (diff)
downloadlinux-next-f87d7eda07fca21efe4b96169ae59007db46e60e.tar.gz
linux-next-f87d7eda07fca21efe4b96169ae59007db46e60e.zip
media: qcom: iris: fix runtime PM reference leaks
Use pm_runtime_resume_and_get() in iris_enable_power_domains() to avoid leaking a runtime PM usage count on failure. Also ensure pm_runtime_put_sync() is always called in iris_disable_power_domains(), even when iris_opp_set_rate() fails, so runtime PM references remain balanced. Fixes: bb8a95aa038e ("media: iris: implement power management") Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Signed-off-by: Hungyu Lin <dennylin0707@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
-rw-r--r--drivers/media/platform/qcom/iris/iris_resources.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/media/platform/qcom/iris/iris_resources.c b/drivers/media/platform/qcom/iris/iris_resources.c
index 872bd09656b1..6d3339423eec 100644
--- a/drivers/media/platform/qcom/iris/iris_resources.c
+++ b/drivers/media/platform/qcom/iris/iris_resources.c
@@ -78,20 +78,21 @@ int iris_enable_power_domains(struct iris_core *core, struct device *pd_dev)
if (ret)
return ret;
- return pm_runtime_get_sync(pd_dev);
+ return pm_runtime_resume_and_get(pd_dev);
}
int iris_disable_power_domains(struct iris_core *core, struct device *pd_dev)
{
int ret;
+ int pm_ret;
ret = iris_opp_set_rate(core->dev, 0);
- if (ret)
- return ret;
- pm_runtime_put_sync(pd_dev);
+ pm_ret = pm_runtime_put_sync(pd_dev);
+ if (!ret)
+ ret = pm_ret;
- return 0;
+ return ret;
}
static struct clk *iris_get_clk_by_type(struct iris_core *core, enum platform_clk_type clk_type)