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
