Message ID | d2cf54b8bc216a2008a537f2a2696b6f77ba9296.1687177318.git.geert+renesas@glider.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge_connector: Handle drm_connector_init_with_ddc() failures | expand |
Hi Geert, Thank you for the patch. On Mon, Jun 19, 2023 at 02:24:21PM +0200, Geert Uytterhoeven wrote: > 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> > --- > drivers/gpu/drm/drm_bridge_connector.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c > index 19ae4a177ac386b2..d2f5602ad4eb5953 100644 > --- a/drivers/gpu/drm/drm_bridge_connector.c > +++ b/drivers/gpu/drm/drm_bridge_connector.c > @@ -317,7 +317,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, > struct drm_connector *connector; > struct i2c_adapter *ddc = NULL; > struct drm_bridge *bridge, *panel_bridge = NULL; > - int connector_type; > + int connector_type, ret; With 'ret' declared on a separate line, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL); > if (!bridge_connector) > @@ -368,8 +368,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)
diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c index 19ae4a177ac386b2..d2f5602ad4eb5953 100644 --- a/drivers/gpu/drm/drm_bridge_connector.c +++ b/drivers/gpu/drm/drm_bridge_connector.c @@ -317,7 +317,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, struct drm_connector *connector; struct i2c_adapter *ddc = NULL; struct drm_bridge *bridge, *panel_bridge = NULL; - int connector_type; + int connector_type, ret; bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL); if (!bridge_connector) @@ -368,8 +368,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)
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> --- drivers/gpu/drm/drm_bridge_connector.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)