Hi,

On 16/09/2026 21:29, Wentao Liang wrote:
The reference to the OLDI serial clock taken with
of_clk_get_by_name() is kept in the OLDI bridge structure for the
whole driver lifetime but is never released; neither the bridge
destruction nor tidss_oldi_deinit() drop it.  Release it when the
bridge is unregistered.

Fixes: 7246e0929945 ("drm/tidss: Add OLDI bridge support")
Cc: [email protected]
Signed-off-by: Wentao Liang <[email protected]>
---
  drivers/gpu/drm/tidss/tidss_oldi.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/tidss/tidss_oldi.c 
b/drivers/gpu/drm/tidss/tidss_oldi.c
index 17c535bfa057..bd151c83555d 100644
--- a/drivers/gpu/drm/tidss/tidss_oldi.c
+++ b/drivers/gpu/drm/tidss/tidss_oldi.c
@@ -450,6 +450,7 @@ void tidss_oldi_deinit(struct tidss_device *tidss)
        for (int i = 0; i < tidss->num_oldis; i++) {
                if (tidss->oldis[i]) {
                        drm_bridge_remove(&tidss->oldis[i]->bridge);
+                       clk_put(tidss->oldis[i]->serial);
                        tidss->is_ext_vp_clk[tidss->oldis[i]->parent_vp] = 
false;
                        tidss->oldis[i] = NULL;
                }

I think this still leaks, if the oldi init for a second OLDI fails, in which case tidss_oldi_deinit() is not called.

It's probably best to use devm version for the clk.

 Tomi

Reply via email to