diff options
author | Ajay Kumar Gupta <ajay.gupta@ti.com> | 2009-08-03 02:13:40 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-09-23 09:46:33 -0400 |
commit | c740d0d80d385b178c319f3d6e627ade8f732488 (patch) | |
tree | 081a38781b7348dcd15bf0581c543180df47e4c5 /drivers/usb/musb | |
parent | db8be50c4307dac2b37305fc59c8dc0f978d09ea (diff) |
USB: musb: fix put_device() call sequence
Invoke put_device(musb->xceiv->dev) before musb_platform_exit()as
xceiv is getting unregistered in musb_platform_exit().
Fixes put_device() panic when module insert/removal is performed
multiple times.
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/musb')
-rw-r--r-- | drivers/usb/musb/musb_core.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 1d26beddf2ca..3a61ddb62bd2 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c | |||
@@ -1850,6 +1850,10 @@ static void musb_free(struct musb *musb) | |||
1850 | dma_controller_destroy(c); | 1850 | dma_controller_destroy(c); |
1851 | } | 1851 | } |
1852 | 1852 | ||
1853 | #ifdef CONFIG_USB_MUSB_OTG | ||
1854 | put_device(musb->xceiv->dev); | ||
1855 | #endif | ||
1856 | |||
1853 | musb_writeb(musb->mregs, MUSB_DEVCTL, 0); | 1857 | musb_writeb(musb->mregs, MUSB_DEVCTL, 0); |
1854 | musb_platform_exit(musb); | 1858 | musb_platform_exit(musb); |
1855 | musb_writeb(musb->mregs, MUSB_DEVCTL, 0); | 1859 | musb_writeb(musb->mregs, MUSB_DEVCTL, 0); |
@@ -1859,10 +1863,6 @@ static void musb_free(struct musb *musb) | |||
1859 | clk_put(musb->clock); | 1863 | clk_put(musb->clock); |
1860 | } | 1864 | } |
1861 | 1865 | ||
1862 | #ifdef CONFIG_USB_MUSB_OTG | ||
1863 | put_device(musb->xceiv->dev); | ||
1864 | #endif | ||
1865 | |||
1866 | #ifdef CONFIG_USB_MUSB_HDRC_HCD | 1866 | #ifdef CONFIG_USB_MUSB_HDRC_HCD |
1867 | usb_put_hcd(musb_to_hcd(musb)); | 1867 | usb_put_hcd(musb_to_hcd(musb)); |
1868 | #else | 1868 | #else |