[PATCH 2/3] media: platform: mtk-mdp3: fix PM reference leak in mdp_comp_clock_on()
Sun Ke
sunke32 at huawei.com
Thu Sep 22 23:25:05 PDT 2022
ping...
在 2022/9/2 16:58, Sun Ke 写道:
> mdp_comp_clock_on will increase runtime PM usage counter,
> and mdp_comp_clock_off will decrease the runtime PM usage counter.
> so, if mdp_comp_clock_on failed after increment runtime PM usage
> counter, it should decrease it before return a error code.
>
> pm_runtime_get_sync will increment pm usage counter even it failed.
> Forgetting to putting operation will result in reference leak here.
> Fix it by replacing it with pm_runtime_resume_and_get to keep usage
> counter balanced.
>
> And if failed to enable clk, add pm_runtime_put() to decrease the
> runtime PM usage counter.
>
> Fixes: 61890ccaefaf ("media: platform: mtk-mdp3: add MediaTek MDP3 driver")
> Signed-off-by: Sun Ke <sunke32 at huawei.com>
> ---
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
> index 9a6ba5851ccb..d3eaf8884412 100644
> --- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
> +++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
> @@ -682,7 +682,7 @@ int mdp_comp_clock_on(struct device *dev, struct mdp_comp *comp)
> int i, ret;
>
> if (comp->comp_dev) {
> - ret = pm_runtime_get_sync(comp->comp_dev);
> + ret = pm_runtime_resume_and_get(comp->comp_dev);
> if (ret < 0) {
> dev_err(dev,
> "Failed to get power, err %d. type:%d id:%d\n",
> @@ -699,6 +699,7 @@ int mdp_comp_clock_on(struct device *dev, struct mdp_comp *comp)
> dev_err(dev,
> "Failed to enable clk %d. type:%d id:%d\n",
> i, comp->type, comp->id);
> + pm_runtime_put(comp->comp_dev);
> return ret;
> }
> }
>
More information about the Linux-mediatek
mailing list