mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
media: mtk-mdp: Fix error handling in probe function
Add mtk_mdp_unregister_m2m_device() on the error handling path to prevent
resource leak.
Add check for the return value of vpu_get_plat_device() to prevent null
pointer dereference. And vpu_get_plat_device() increases the reference
count of the returned platform device. Add platform_device_put() to
prevent reference leak.
Fixes: c8eb2d7e82 ("[media] media: Add Mediatek MDP Driver")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
8beb7e982f
commit
8a8a3232ab
|
|
@ -194,11 +194,17 @@ static int mtk_mdp_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
mdp->vpu_dev = vpu_get_plat_device(pdev);
|
||||
if (!mdp->vpu_dev) {
|
||||
dev_err(&pdev->dev, "Failed to get vpu device\n");
|
||||
ret = -ENODEV;
|
||||
goto err_vpu_get_dev;
|
||||
}
|
||||
|
||||
ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
|
||||
VPU_RST_MDP);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Failed to register reset handler\n");
|
||||
goto err_m2m_register;
|
||||
goto err_reg_handler;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, mdp);
|
||||
|
|
@ -206,7 +212,7 @@ static int mtk_mdp_probe(struct platform_device *pdev)
|
|||
ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Failed to set vb2 dma mag seg size\n");
|
||||
goto err_m2m_register;
|
||||
goto err_reg_handler;
|
||||
}
|
||||
|
||||
pm_runtime_enable(dev);
|
||||
|
|
@ -214,6 +220,12 @@ static int mtk_mdp_probe(struct platform_device *pdev)
|
|||
|
||||
return 0;
|
||||
|
||||
err_reg_handler:
|
||||
platform_device_put(mdp->vpu_dev);
|
||||
|
||||
err_vpu_get_dev:
|
||||
mtk_mdp_unregister_m2m_device(mdp);
|
||||
|
||||
err_m2m_register:
|
||||
v4l2_device_unregister(&mdp->v4l2_dev);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user