The drm_bridge_chain_pre_enable() is not the proper opposite of
drm_bridge_chain_post_disable(). It continues along the chain to
_before_ the starting bridge. Let's fix that.

Fixes: 05193dc38197 ("drm/bridge: Make the bridge chain a double-linked list")
Signed-off-by: Douglas Anderson <diand...@chromium.org>
Reviewed-by: Andrzej Hajda <a.ha...@samsung.com>
Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
---

(no changes since v1)

 drivers/gpu/drm/drm_bridge.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index 64f0effb52ac..044acd07c153 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -522,6 +522,9 @@ void drm_bridge_chain_pre_enable(struct drm_bridge *bridge)
        list_for_each_entry_reverse(iter, &encoder->bridge_chain, chain_node) {
                if (iter->funcs->pre_enable)
                        iter->funcs->pre_enable(iter);
+
+               if (iter == bridge)
+                       break;
        }
 }
 EXPORT_SYMBOL(drm_bridge_chain_pre_enable);
-- 
2.31.1.368.gbe11c130af-goog

Reply via email to