Commit 82b7d4b5 authored by Moudy Ho's avatar Moudy Ho Committed by Hans Verkuil
Browse files

media: platform: mtk-mdp3: fix error handling in mdp_probe()



Adjust label "err_return" order to avoid double freeing, and
add two labels for easy traceability.

Fixes: 61890cca ("media: platform: mtk-mdp3: add MediaTek MDP3 driver")
Signed-off-by: default avatarMoudy Ho <moudy.ho@mediatek.com>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 74a596e7
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -196,27 +196,27 @@ static int mdp_probe(struct platform_device *pdev)
	mm_pdev = __get_pdev_by_id(pdev, MDP_INFRA_MMSYS);
	if (!mm_pdev) {
		ret = -ENODEV;
		goto err_return;
		goto err_destroy_device;
	}
	mdp->mdp_mmsys = &mm_pdev->dev;

	mm_pdev = __get_pdev_by_id(pdev, MDP_INFRA_MUTEX);
	if (WARN_ON(!mm_pdev)) {
		ret = -ENODEV;
		goto err_return;
		goto err_destroy_device;
	}
	for (i = 0; i < MDP_PIPE_MAX; i++) {
		mdp->mdp_mutex[i] = mtk_mutex_get(&mm_pdev->dev);
		if (!mdp->mdp_mutex[i]) {
			ret = -ENODEV;
			goto err_return;
			goto err_free_mutex;
		}
	}

	ret = mdp_comp_config(mdp);
	if (ret) {
		dev_err(dev, "Failed to config mdp components\n");
		goto err_return;
		goto err_free_mutex;
	}

	mdp->job_wq = alloc_workqueue(MDP_MODULE_NAME, WQ_FREEZABLE, 0);
@@ -287,11 +287,12 @@ static int mdp_probe(struct platform_device *pdev)
	destroy_workqueue(mdp->job_wq);
err_deinit_comp:
	mdp_comp_destroy(mdp);
err_return:
err_free_mutex:
	for (i = 0; i < MDP_PIPE_MAX; i++)
		if (mdp)
		mtk_mutex_put(mdp->mdp_mutex[i]);
err_destroy_device:
	kfree(mdp);
err_return:
	dev_dbg(dev, "Errno %d\n", ret);
	return ret;
}