usb: musb: dsps: move debugfs_remove_recursive()
When the platform initialization fails due to missing resources, it will return -EPROBE_DEFER after dsps_musb_init() has been called. dsps_musb_init() calls dsps_musb_dbg_init() to allocate the debugfs nodes. At a later point in time, the probe will be retried, and dsps_musb_dbg_init() will be called again. debugfs_create_dir() will fail this time, as the node already exists, and so the entire device probe will fail with -ENOMEM. Fix this by moving debugfs_remove_recursive() from dsps_remove() to the plaform's exit function, so it will be cleanly torn down when the probe fails. It also feels more natural this way, as .exit is the counterpart to .init. Signed-off-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
5cdf7d5be8
Коммит
0fca91b8a4
|
@ -470,8 +470,9 @@ static int dsps_musb_exit(struct musb *musb)
|
|||
struct dsps_glue *glue = dev_get_drvdata(dev->parent);
|
||||
|
||||
del_timer_sync(&glue->timer);
|
||||
|
||||
usb_phy_shutdown(musb->xceiv);
|
||||
debugfs_remove_recursive(glue->dbgfs_root);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -708,8 +709,6 @@ static int dsps_remove(struct platform_device *pdev)
|
|||
pm_runtime_put(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
debugfs_remove_recursive(glue->dbgfs_root);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче