]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/display: bridge-connector: use drm_for_each_bridge_in_chain_scoped()
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Fri, 8 Aug 2025 14:49:11 +0000 (16:49 +0200)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Tue, 16 Sep 2025 13:02:14 +0000 (15:02 +0200)
Use drm_for_each_bridge_in_chain_scoped() instead of
drm_for_each_bridge_in_chain() to ensure the bridge being looped on is
refcounted.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20250808-drm-bridge-alloc-getput-for_each_bridge-v2-4-edb6ee81edf1@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
drivers/gpu/drm/display/drm_bridge_connector.c

index b4fa929bd146bd2f9273a271858e5f5a8e5f4fd6..a5bdd6c1064399ece6b19560f145b877c9e0680e 100644 (file)
@@ -137,10 +137,9 @@ static void drm_bridge_connector_hpd_notify(struct drm_connector *connector,
 {
        struct drm_bridge_connector *bridge_connector =
                to_drm_bridge_connector(connector);
-       struct drm_bridge *bridge;
 
        /* Notify all bridges in the pipeline of hotplug events. */
-       drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) {
+       drm_for_each_bridge_in_chain_scoped(bridge_connector->encoder, bridge) {
                if (bridge->funcs->hpd_notify)
                        bridge->funcs->hpd_notify(bridge, status);
        }
@@ -639,7 +638,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
        struct drm_bridge_connector *bridge_connector;
        struct drm_connector *connector;
        struct i2c_adapter *ddc = NULL;
-       struct drm_bridge *bridge, *panel_bridge = NULL;
+       struct drm_bridge *panel_bridge = NULL;
        unsigned int supported_formats = BIT(HDMI_COLORSPACE_RGB);
        unsigned int max_bpc = 8;
        bool support_hdcp = false;
@@ -667,7 +666,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
         * detection are available, we don't support hotplug detection at all.
         */
        connector_type = DRM_MODE_CONNECTOR_Unknown;
-       drm_for_each_bridge_in_chain(encoder, bridge) {
+       drm_for_each_bridge_in_chain_scoped(encoder, bridge) {
                if (!bridge->interlace_allowed)
                        connector->interlace_allowed = false;
                if (!bridge->ycbcr_420_allowed)