Before further modifying this function, simpify the struct device_node management using the scoped variat of for_each_available_child_of_node().
Signed-off-by: Luca Ceresoli <[email protected]> --- drivers/gpu/drm/mcde/mcde_dsi.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index 694372581840..ce078aa3910f 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -1076,7 +1076,6 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, struct drm_device *drm = data; struct mcde *mcde = to_mcde(drm); struct mcde_dsi *d = dev_get_drvdata(dev); - struct device_node *child; struct drm_panel *panel = NULL; struct drm_bridge *bridge __free(drm_bridge_put) = NULL; @@ -1104,7 +1103,7 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, } /* Look for a panel as a child to this node */ - for_each_available_child_of_node(dev->of_node, child) { + for_each_available_child_of_node_scoped(dev->of_node, child) { panel = of_drm_find_panel(child); if (IS_ERR(panel)) { dev_err(dev, "failed to find panel try bridge (%ld)\n", @@ -1114,15 +1113,12 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, bridge = of_drm_find_and_get_bridge(child); if (!bridge) { dev_err(dev, "failed to find bridge\n"); - of_node_put(child); return -EINVAL; } } - if (panel || bridge) { - of_node_put(child); + if (panel || bridge) break; - } } if (panel) { bridge = drm_panel_bridge_add_typed(panel, -- 2.55.0
