From 93dd05a23b5bc9c0d6be331b10eed876b8b9c1f1 Mon Sep 17 00:00:00 2001 From: Myeonghun Pak Date: Fri, 24 Apr 2026 21:40:39 +0900 Subject: [PATCH] drm/tve200: Fix probe cleanup after register failure tve200_modeset_init() creates a panel bridge and initializes the DRM mode config before tve200_probe() registers the DRM device. If drm_dev_register() fails, probe returns an error and the driver's remove callback is not called, so those modeset resources are left behind. Unwind the panel bridge and mode config on that failure path before disabling the clock and dropping the DRM device reference. Signed-off-by: Myeonghun Pak Signed-off-by: Linus Walleij Link: https://patch.msgid.link/20260424124118.38649-1-mhun512@gmail.com --- drivers/gpu/drm/tve200/tve200_drv.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c index a048e37f1c2c..562f3f11812a 100644 --- a/drivers/gpu/drm/tve200/tve200_drv.c +++ b/drivers/gpu/drm/tve200/tve200_drv.c @@ -221,12 +221,16 @@ static int tve200_probe(struct platform_device *pdev) ret = drm_dev_register(drm, 0); if (ret < 0) - goto clk_disable; + goto mode_config_cleanup; drm_client_setup_with_fourcc(drm, DRM_FORMAT_RGB565); return 0; +mode_config_cleanup: + if (priv->panel) + drm_panel_bridge_remove(priv->bridge); + drm_mode_config_cleanup(drm); clk_disable: clk_disable_unprepare(priv->pclk); dev_unref: