Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [Medium] drm/bridge_connector: refcount leak of hw_readout bridge on cleanup
--

commit d10ad940eac7c7ab253337c97ac0dbff416cd941
Author: Maxime Ripard <[email protected]>

drm/bridge_connector: Implement hw readout for connector

This commit implements hardware state readout support for the generic bridge
connector. It allows the last bridge in the chain that supports readout to fill
the connector state from its own hardware state.

> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c 
> b/drivers/gpu/drm/display/drm_bridge_connector.c
> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
[ ... ]
> @@ -896,6 +927,10 @@ struct drm_connector *drm_bridge_connector_init(struct 
> drm_device *drm,
>               if (!bridge->ycbcr_420_allowed)
>                       connector->ycbcr_420_allowed = false;
>  
> +             if (bridge->ops & DRM_BRIDGE_OP_CONNECTOR_HW_READOUT) {
> +                     
> drm_bridge_put(bridge_connector->bridge_connector_hw_readout);
> +                     bridge_connector->bridge_connector_hw_readout = 
> drm_bridge_get(bridge);
> +             }

[Severity: Medium]
Does this leak the bridge reference when the connector is destroyed?

In drm_bridge_connector_init(), a reference to the bridge implementing hardware
readout is acquired using drm_bridge_get() and stored in
bridge_connector->bridge_connector_hw_readout.

The teardown of the other bridge references in this struct is managed by the
action callback drm_bridge_connector_put_bridges():

drivers/gpu/drm/display/drm_bridge_connector.c:drm_bridge_connector_put_bridges()
 {
        struct drm_bridge_connector *bridge_connector = (struct 
drm_bridge_connector *)data;

        drm_bridge_put(bridge_connector->bridge_edid);
        drm_bridge_put(bridge_connector->bridge_hpd);
        drm_bridge_put(bridge_connector->bridge_detect);
        ...
}

However, it doesn't look like drm_bridge_connector_put_bridges() was updated
to release the newly added bridge_connector_hw_readout reference when the
connector is cleaned up.

>               /*
>                * Ensure the last bridge declares OP_EDID or OP_MODES or both.
>                */

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=22

Reply via email to