Skip to content

Commit

Permalink
drm/mediatek: Switch to for_each_child_of_node_scoped()
Browse files Browse the repository at this point in the history
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: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: AngeloGioacchino 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: Chun-Kuang Hu <chunkuang.hu@kernel.org>
  • Loading branch information
javiercarrascocruz authored and Chun-Kuang Hu committed Nov 4, 2024
1 parent f708e8b commit fd620fc
Showing 1 changed file with 2 additions and 5 deletions.
7 changes: 2 additions & 5 deletions drivers/gpu/drm/mediatek/mtk_drm_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -406,10 +405,8 @@ 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) {
Expand Down

0 comments on commit fd620fc

Please sign in to comment.