[PATCH] drm/sti: dvo: Remove bridge on attach failure

From: Myeonghun Pak

Date: Tue Jul 28 2026 - 13:29:10 EST


drm_bridge_add() registers the bridge globally and takes a reference.
If the subsequent drm_bridge_attach() call fails, the component bind
callback returns without being considered bound, so its unbind callback is
not called. This leaves the bridge registered and its reference held.

Remove the bridge before returning the attach error.

Fixes: 384764c36116 ("drm/sti: fixup for bridge interface")
Cc: stable@xxxxxxxxxxxxxxx
Co-developed-by: Ijae Kim <ae878000@xxxxxxxxx>
Signed-off-by: Ijae Kim <ae878000@xxxxxxxxx>
Signed-off-by: Myeonghun Pak <mhun512@xxxxxxxxx>
---
drivers/gpu/drm/sti/sti_dvo.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index 7484d3c3f4..4978e0acbf 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -459,8 +459,10 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
drm_bridge_add(&dvo->bridge);

err = drm_bridge_attach(encoder, &dvo->bridge, NULL, 0);
- if (err)
+ if (err) {
+ drm_bridge_remove(&dvo->bridge);
return err;
+ }

connector->encoder = encoder;
dvo->encoder = encoder;
--
2.47.1