[PATCH] usb: musb: mediatek: fix child device leak
From: Guangshuo Li
Date: Mon Sep 21 2026 - 04:51:56 EST
mtk_musb_probe() populates child platform devices using
of_platform_populate(), but neither the probe error paths nor the
driver remove path depopulate them.
If any initialization step after of_platform_populate() fails, the
probe returns without unregistering the populated child devices.
Likewise, the children remain registered when the driver is later
unbound.
Use devm_of_platform_populate() so the populated child devices are
automatically depopulated when probe fails or the driver is unbound.
The issue was identified by a static analysis tool I developed and
confirmed by manual review.
Fixes: 0990366bab3c ("usb: musb: Add support for MediaTek musb controller")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
---
drivers/usb/musb/mediatek.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/musb/mediatek.c b/drivers/usb/musb/mediatek.c
index c6cbe718b1da..3aff0add2faf 100644
--- a/drivers/usb/musb/mediatek.c
+++ b/drivers/usb/musb/mediatek.c
@@ -415,7 +415,7 @@ static int mtk_musb_probe(struct platform_device *pdev)
if (!pdata)
return -ENOMEM;
- ret = of_platform_populate(np, NULL, NULL, dev);
+ ret = devm_of_platform_populate(dev);
if (ret)
return dev_err_probe(dev, ret,
"failed to create child devices at %p\n", np);
--
2.43.0