From: Luca Ceresoli Date: Sat, 31 Jan 2026 15:58:35 +0000 (+0100) Subject: drm/mcde: dsi: mcde_dsi_bind: break when a panel or bridge is found X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe0b1b8269eba268a7dee293b32d6c008a6c3fec;p=thirdparty%2Fkernel%2Flinux.git drm/mcde: dsi: mcde_dsi_bind: break when a panel or bridge is found mcde_dsi_bind() has a loop over all subnodes looking for a panel, but does not exit when a match is found and only stores the last match. However this will be problematic when introducing refcounting on the struct drm_device pointer in a following commit, because of_drm_find_and_get_bridge() would get a reference to multiple bridges. There seem to be no real reason for looking for multiple panels, so just break as soon as a match is found. Reviewed-by: Linus Walleij Link: https://patch.msgid.link/20260131-drm-bridge-alloc-getput-drm_of_find_bridge-4-v2-3-e081bcdc1467@bootlin.com Signed-off-by: Luca Ceresoli --- diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index a3423459dd7ac..5893fd2681b32 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -1116,6 +1116,11 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, return -EINVAL; } } + + if (panel || bridge) { + of_node_put(child); + break; + } } if (panel) { bridge = drm_panel_bridge_add_typed(panel,