Message ID | 20250314-drm-bridge-refcount-v7-6-152571f8c694@bootlin.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/bridge: add devm_drm_bridge_alloc() with bridge refcount | expand |
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@bootlin.com> > > --- > > 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@kernel.org> Maxime
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)); } /**
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@bootlin.com> --- This patch was added in v7. --- include/drm/drm_bridge.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)