Commit 0fca91b8 authored by Daniel Mack's avatar Daniel Mack Committed by Felipe Balbi
Browse files

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: default avatarDaniel Mack <zonque@gmail.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 5cdf7d5b
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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;
}