Re: [PATCH v7 06/11] drm/bridge: get the bridge returned by drm_bridge_chain_get_first_bridge()

From: Maxime Ripard
Date: Fri Mar 14 2025 - 14:10:50 EST


On Fri, Mar 14, 2025 at 11:31:19AM +0100, Luca Ceresoli wrote:
> drm_bridge_chain_get_first_bridge() returns a bridge pointer that the
> caller could hold for a long time. Increment the refcount of the returned
> bridge and document it must be put by the caller.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@xxxxxxxxxxx>
>
> ---
>
> This patch was added in v7.
> ---
> include/drm/drm_bridge.h | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> index a5accd64c364ebb57903ae1e7459034ad9ebf4f3..d9777d5f2e9ef006f0062e4507bce99df4146cd9 100644
> --- a/include/drm/drm_bridge.h
> +++ b/include/drm/drm_bridge.h
> @@ -1105,6 +1105,9 @@ drm_bridge_get_prev_bridge(struct drm_bridge *bridge)
> * drm_bridge_chain_get_first_bridge() - Get the first bridge in the chain
> * @encoder: encoder object
> *
> + * The refcount of the returned bridge is incremented. Use drm_bridge_put()
> + * when done with it.
> + *
> * RETURNS:
> * the first bridge in the chain, or NULL if @encoder has no bridge attached
> * to it.
> @@ -1112,8 +1115,8 @@ drm_bridge_get_prev_bridge(struct drm_bridge *bridge)
> static inline struct drm_bridge *
> drm_bridge_chain_get_first_bridge(struct drm_encoder *encoder)
> {
> - return list_first_entry_or_null(&encoder->bridge_chain,
> - struct drm_bridge, chain_node);
> + return drm_bridge_get(list_first_entry_or_null(&encoder->bridge_chain,
> + struct drm_bridge, chain_node));
> }

We'll need to modify drm_bridge_get_next_bridge, drm_bridge_get_prev_bridge, and
drm_for_each_bridge_in_chain in a similar manner, but for this one

Reviewed-by: Maxime Ripard <mripard@xxxxxxxxxx>

Maxime

Attachment: signature.asc
Description: PGP signature