Commit fd620fc2 authored by Javier Carrasco's avatar Javier Carrasco Committed by Chun-Kuang Hu
Browse files

drm/mediatek: Switch to for_each_child_of_node_scoped()



Introduce the scoped variant of the loop to automatically release the
child node when it goes out of scope, which is more robust than the
non-scoped variant, and accounts for new early exits that could be added
in the future.

Signed-off-by: default avatarJavier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: default avatarCK Hu <ck.hu@mediatek.com>
Reviewed-by: default avatarChen-Yu Tsai <wenst@chromium.org>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20241011-mtk_drm_drv_memleak-v1-2-2b40c74c8d75@gmail.com/


Signed-off-by: default avatarChun-Kuang Hu <chunkuang.hu@kernel.org>
parent f708e8b4
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -372,12 +372,11 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
	struct mtk_drm_private *temp_drm_priv;
	struct device_node *phandle = dev->parent->of_node;
	const struct of_device_id *of_id;
	struct device_node *node;
	struct device *drm_dev;
	unsigned int cnt = 0;
	int i, j;

	for_each_child_of_node(phandle->parent, node) {
	for_each_child_of_node_scoped(phandle->parent, node) {
		struct platform_device *pdev;

		of_id = of_match_node(mtk_drm_of_ids, node);
@@ -406,11 +405,9 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
		if (temp_drm_priv->mtk_drm_bound)
			cnt++;

		if (cnt == MAX_CRTC) {
			of_node_put(node);
		if (cnt == MAX_CRTC)
			break;
	}
	}

	if (drm_priv->data->mmsys_dev_num == cnt) {
		for (i = 0; i < cnt; i++)