drm_atomic_bridge_chain_check() callers can pass a NULL bridge. Let's
bail out before derefencing the bridge pointer when that happens.

Reported-by: Chris Wilson <ch...@chris-wilson.co.uk>
Fixes: b86d895524ab ("drm/bridge: Add an ->atomic_check() hook")
Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com>
---
 drivers/gpu/drm/drm_bridge.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index da28967bc586..f6f020854e83 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -941,15 +941,19 @@ int drm_atomic_bridge_chain_check(struct drm_bridge 
*bridge,
                                  struct drm_connector_state *conn_state)
 {
        struct drm_connector *conn = conn_state->connector;
-       struct drm_encoder *encoder = bridge->encoder;
+       struct drm_encoder *encoder;
        struct drm_bridge *iter;
        int ret;
 
+       if (!bridge)
+               return 0;
+
        ret = drm_atomic_bridge_chain_select_bus_fmts(bridge, crtc_state,
                                                      conn_state);
        if (ret)
                return ret;
 
+       encoder = bridge->encoder;
        list_for_each_entry_reverse(iter, &encoder->bridge_chain, chain_node) {
                int ret;
 
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to