Hi Tomi, Sorry for the very late reply.
You are right. The clk_put() I added to tidss_oldi_deinit() only covers the unbind path. When tidss_oldi_init() fails for a second OLDI transmitter, tidss_probe() returns the error directly and tidss_oldi_deinit() is never called, so the reference taken for the first transmitter is leaked as well. I have switched to devm_get_clk_from_child(), which is of_clk_get_by_name() with a device managed reference. The reference is then dropped both when the driver is unbound and when probe fails, and no explicit clk_put() is needed any more. The updated patch follows in a separate mail. For transparency about how this patch was produced: the candidate issue was found with static analysis tools, and DeepSeek-V4.1-Flash and GPT-6.1 Sol were used to help audit the error paths and to prepare the patch. Thanks, Wentao
