Hi, On Wed, Apr 02, 2014 at 06:16:23PM +0200, Daniel Mack wrote: > On 04/02/2014 06:05 PM, Felipe Balbi wrote: > > On Wed, Apr 02, 2014 at 11:46:51AM +0200, Daniel Mack wrote: > > >> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c > >> index 3372ded..e2fd263 100644 > >> --- a/drivers/usb/musb/musb_dsps.c > >> +++ b/drivers/usb/musb/musb_dsps.c > >> @@ -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); > > > > I don't think this is the right fix. debugfs_remove_recursive is > > supposed to remove the directory as well. Why isn't dsps_musb_exit() > > called ? > > dsps_musb_exit() is called, hence my fix works :) The question is rather > why dsps_remove() isn't called. > > For me, the fix looked obvious, as resources that are claimed in > dsps_musb_init() should obviously be freed in its counterpart function, > dsps_musb_exit(). For reasons of readability if not for any other :) you're correct, for whatever reason I read it as moving the lines the other way around (from _exit() to _remove()). I'll queue this once -rc1 is tagged. -- balbi
Attachment:
signature.asc
Description: Digital signature