media: platform: mtk-mdp3: fix device leaks at probe
Subsystems (3)
PATCH 1/1 media: platform: mtk-mdp3: fix device leaks at probe
Make sure to drop the references taken when looking up the subsys devices during probe on probe failure (e.g. probe deferral) and on driver unbind.
Similarly, drop the SCP device reference after retrieving its platform data during probe to avoid leaking it.
Note that holding a reference to a device does not prevent its driver data from going away.
--- .../media/platform/mediatek/mdp3/mtk-mdp3-core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c +14 -0
@@ -157,10 +157,18 @@ void mdp_video_device_release(struct video_device *vdev)kfree (mdp); } +static void mdp_put_device (void *_dev) +{ +struct device *dev = _dev; + +put_device (dev); +} +static int mdp_mm_subsys_deploy (struct mdp_dev *mdp,enum mdp_infra_id id) {struct platform_device *mm_pdev =NULL ;struct device **dev; +int ret;int i;if (!mdp)
@@ -194,6 +202,11 @@ static int mdp_mm_subsys_deploy(struct mdp_dev *mdp, enum mdp_infra_id id)if (WARN_ON (!mm_pdev))return -ENODEV ; + ret =devm_add_action_or_reset (&mdp->pdev->dev, mdp_put_device, + &mm_pdev->dev); +if (ret) +return ret; + *dev = &mm_pdev->dev; }
@@ -279,6 +292,7 @@ static int mdp_probe(struct platform_device *pdev) goto err_destroy_clock_wq; } mdp->scp =platform_get_drvdata (mm_pdev); +put_device (&mm_pdev->dev); } mdp->rproc_handle =scp_get_rproc (mdp->scp);
Signature · 1 line
2.49.1
Il 24/09/25 16:39, Johan Hovold ha scritto:
Quoted 7 lines
Make sure to drop the references taken when looking up the subsys devices during probe on probe failure (e.g. probe deferral) and on driver unbind.
Similarly, drop the SCP device reference after retrieving its platform data during probe to avoid leaking it.
Quoted 7 lines
Note that holding a reference to a device does not prevent its driver data from going away.
Fixes 61890ccaefaf ("media: platform: mtk-mdp3: add MediaTek MDP3 driver")Cc [email protected] # 6.1Cc Moudy Ho <[email protected]>Signed-off-by Johan Hovold <[email protected]>