[PATCH v2] bus: fsl-mc: register the object drivers after misc_class exists
Ioana Ciornei
ioana.ciornei at nxp.com
Thu Sep 10 02:20:46 PDT 2026
On Wed, Sep 09, 2026 at 07:04:40PM +0200, Vincent Jardin via B4 Relay wrote:
> From: Vincent Jardin <vjardin at free.fr>
>
> Unbinding and re-binding the root DPRC fails with:
>
> sysfs: cannot create duplicate filename '/dev/char/10:256'
> misc_register / fsl_mc_uapi_create_device_file /
> dprc_setup / dprc_probe
>
> It happens when the fsl-mc bus probe is not deferred, without SMMU:
> - the dprc driver is registered at postcore_initcall,
> - the DT node is populated at arch_initcall_sync,
> - the root DPRC probes right there, before misc_init() has
> registered misc_class at subsys_initcall.
>
> misc_register() still succeeds but the device gets
> no class, so misc_deregister() at unbind cannot find it:
> the minor is freed while the device and its /sys/dev/char/ link leak,
> and then the next bind collides on the same minor.
>
> Let's move the dprc and allocator drivers registration, and
> platform_driver_register(), to subsys_initcall_sync, after misc_init()
> at subsys_initcall.
> bus_register() and the platform-bus notifier stay at postcore_initcall
> so that fsl_mc_bus_notifier() still pauses the MC before the SMMU is probed.
>
Thank you for the updated commit message.
> Cc: stable+noautosel at kernel.org # niche: root DPRC unbind/rebind only
> Fixes: 2cf1e703f066 ("bus: fsl-mc: add fsl-mc userspace support")
> Signed-off-by: Vincent Jardin <vjardin at free.fr>
Reviewed-by: Ioana Ciornei <ioana.ciornei at nxp.com>
More information about the linux-arm-kernel
mailing list