On Mon, 18 May 2026 18:01:40 +0000, Jonas Karlman <[email protected]> wrote:

Hello Jonas,

>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c 
> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index b7bfc0e9a6b2..9d795c550f8a 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -2600,10 +2609,14 @@ static int dw_hdmi_connector_create(struct dw_hdmi 
> *hdmi)
>  
>       drm_connector_helper_add(connector, &dw_hdmi_connector_helper_funcs);
>  
> -     drm_connector_init_with_ddc(hdmi->bridge.dev, connector,
> -                                 &dw_hdmi_connector_funcs,
> -                                 DRM_MODE_CONNECTOR_HDMIA,
> -                                 hdmi->ddc);
> +     ret = drm_connector_init_with_ddc(hdmi->bridge.dev, connector,
> +                                       &dw_hdmi_connector_funcs,
> +                                       DRM_MODE_CONNECTOR_HDMIA,
> +                                       hdmi->ddc);
> +     if (ret)
> +             return ret;
> +
> +     drm_bridge_get(&hdmi->bridge);

I'm not fully following the code paths, but both the report and the fix
make sense to me. Only I'd move the drm_bridge_get() before
drm_connector_init_with_ddc(), to avoid a short window where no reference
is held and the bridge might be destroyed before drm_bridge_get() is
called. I'm not sure this can happen, but it's better to write the code in
a way that clearly makes it impossible.

Otherwise looks good.

Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Reply via email to