drm/bridge_connector: Handle drm_connector_init_with_ddc() failures
authorGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 17 Jul 2023 13:15:44 +0000 (15:15 +0200)
committerJavier Martinez Canillas <javierm@redhat.com>
Sat, 29 Jul 2023 18:56:42 +0000 (20:56 +0200)
drm_connector_init_with_ddc() can fail, but the call in
drm_bridge_connector_init() does not check that.  Fix this by adding
the missing error handling.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/3a7e9540d8dc94298d021aa2fb046ae8616ca4dd.1689599701.git.geert+renesas@glider.be
drivers/gpu/drm/drm_bridge_connector.c

index fc6f16e..1da93d5 100644 (file)
@@ -318,6 +318,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
        struct i2c_adapter *ddc = NULL;
        struct drm_bridge *bridge, *panel_bridge = NULL;
        int connector_type;
+       int ret;
 
        bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL);
        if (!bridge_connector)
@@ -368,8 +369,14 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
                return ERR_PTR(-EINVAL);
        }
 
-       drm_connector_init_with_ddc(drm, connector, &drm_bridge_connector_funcs,
-                                   connector_type, ddc);
+       ret = drm_connector_init_with_ddc(drm, connector,
+                                         &drm_bridge_connector_funcs,
+                                         connector_type, ddc);
+       if (ret) {
+               kfree(bridge_connector);
+               return ERR_PTR(ret);
+       }
+
        drm_connector_helper_add(connector, &drm_bridge_connector_helper_funcs);
 
        if (bridge_connector->bridge_hpd)