Re: [PATCH v2] clk: scu/imx8qxp: do not register driver in probe()

From: Danilo Krummrich

Date: Tue Feb 24 2026 - 07:05:05 EST


On Tue Feb 24, 2026 at 10:57 AM CET, Abel Vesa wrote:
> On 26-02-23 21:21:29, Danilo Krummrich wrote:
>> On Fri Feb 13, 2026 at 12:58 AM CET, Danilo Krummrich wrote:
>> > imx_clk_scu_init() registers the imx_clk_scu_driver while commonly being
>> > called from IMX driver's probe() callbacks.
>> >
>> > However, it neither makes sense to register drivers from probe()
>> > callbacks of other drivers, nor does the driver core allow registering
>> > drivers with a device lock already being held.
>> >
>> > The latter was revealed by commit dc23806a7c47 ("driver core: enforce
>> > device_lock for driver_match_device()") leading to a deadlock condition
>> > described in [1].
>> >
>> > Besides that, nothing seems to unregister the imx_clk_scu_driver once
>> > the corresponding driver module is unloaded, which leaves the
>> > driver-core with a dangling pointer.
>> >
>> > Also, if there are multiple matching devices for the imx8qxp_clk_driver,
>> > imx8qxp_clk_probe() calls imx_clk_scu_init() multiple times. However,
>> > any subsequent call after the first one will fail, since the driver-core
>> > does not allow to register the same struct platform_driver multiple
>> > times.
>> >
>> > Hence, register the imx_clk_scu_driver from module_init() and unregister
>> > it in module_exit().
>> >
>> > Note that we first register the imx8qxp_clk_driver and then call
>> > imx_clk_scu_module_init() to avoid having to call
>> > imx_clk_scu_module_exit() in the unwind path of imx8qxp_clk_init().
>> >
>> > Fixes: dc23806a7c47 ("driver core: enforce device_lock for driver_match_device()")
>> > Fixes: 220175cd3979 ("clk: imx: scu: fix build break when compiled as modules")
>> > Reported-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx>
>> > Closes: https://lore.kernel.org/lkml/13955113.uLZWGnKmhe@steina-w/
>> > Tested-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> # TQMa8x/MBa8x
>> > Link: https://lore.kernel.org/lkml/DFU7CEPUSG9A.1KKGVW4HIPMSH@xxxxxxxxxx/ [1]
>> > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>
>
> Acked-by: Abel Vesa <abelvesa@xxxxxxxxxx>

Applied to driver-core-linus, thanks!