On 06/21/2025, Luca Ceresoli wrote: > The bridge returned by drm_bridge_chain_get_first_bridge() is > refcounted. Put it when done. Use a scope-based free action to catch all > the code paths. > > Reviewed-by: Maxime Ripard <mrip...@kernel.org> > Signed-off-by: Luca Ceresoli <luca.ceres...@bootlin.com> > --- > > This patch was added in v7. > --- > drivers/gpu/drm/mxsfb/lcdif_kms.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c > b/drivers/gpu/drm/mxsfb/lcdif_kms.c > index > dbd42cc1da87f82ef9cd4ccc70cdecbe56035174..21311cf5efee7d26c80316bffe80dd2bfed02238 > 100644 > --- a/drivers/gpu/drm/mxsfb/lcdif_kms.c > +++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c > @@ -433,7 +433,6 @@ static int lcdif_crtc_atomic_check(struct drm_crtc *crtc, > struct drm_connector *connector; > struct drm_encoder *encoder; > struct drm_bridge_state *bridge_state; > - struct drm_bridge *bridge; > u32 bus_format, bus_flags; > bool format_set = false, flags_set = false; > int ret, i; > @@ -448,6 +447,8 @@ static int lcdif_crtc_atomic_check(struct drm_crtc *crtc, > > /* Try to find consistent bus format and flags across first bridges. */ > for_each_new_connector_in_state(state, connector, connector_state, i) { > + struct drm_bridge *bridge __free(drm_bridge_put) = NULL; > + > if (!connector_state->crtc) > continue;
To avoid the unnecessary cleanup for !connector_state->crtc, I would write: -8<- --- a/drivers/gpu/drm/mxsfb/lcdif_kms.c +++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c @@ -433,7 +433,6 @@ static int lcdif_crtc_atomic_check(struct drm_crtc *crtc, struct drm_connector *connector; struct drm_encoder *encoder; struct drm_bridge_state *bridge_state; - struct drm_bridge *bridge; u32 bus_format, bus_flags; bool format_set = false, flags_set = false; int ret, i; @@ -453,7 +452,8 @@ static int lcdif_crtc_atomic_check(struct drm_crtc *crtc, encoder = connector_state->best_encoder; - bridge = drm_bridge_chain_get_first_bridge(encoder); + struct drm_bridge *bridge __free(drm_bridge_put) = + drm_bridge_chain_get_first_bridge(encoder); if (!bridge) continue; -8<- > > -- Regards, Liu Ying