linux/drivers/usb/musb
Sergei Shtylyov f405387435 USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode
Since commit 461972d8a4 (musb_core: don't call
musb_platform_exit() twice), unloading the driver module results in a WARNING
"kobject: '(null)' (c73de788): is not initialized, yet kobject_put() is being
called." (or even kernel oops) on e.g. DaVincis, though only in the OTG mode.
There exists dubious and unbalanced put_device() call in musb_free() which
takes place only in the OTG mode.  As this commit caused musb_platform_exit()
to be called (and so unregister the NOP transceiver) before this put_device()
call, this function references already freed memory.

On the other hand, all the glue layers miss the otg_put_transceiver() call,
complementary to the otg_get_transceiver() call that they do.  So, I think
the solution is to get rid of the strange put_device() call, and instead
call otg_put_transceiver() in the glue layers...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-10-22 10:21:58 -07:00
..
blackfin.c USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode 2010-10-22 10:21:58 -07:00
blackfin.h USB: musb: workaround Blackfin FIFO anomalies 2009-12-23 11:34:19 -08:00
cppi_dma.c USB: musb: suppress warning about unused flags 2010-10-22 10:21:55 -07:00
cppi_dma.h headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
da8xx.c usb: musb: introduce DA8xx/OMAP-L1x glue layer 2010-10-22 10:21:52 -07:00
davinci.c USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode 2010-10-22 10:21:58 -07:00
davinci.h USB: musb: partial DaVinci dm355 support 2009-03-24 16:20:36 -07:00
Kconfig usb: musb: introduce DA8xx/OMAP-L1x glue layer 2010-10-22 10:21:52 -07:00
Makefile usb: change to new flag variable 2010-10-22 10:21:56 -07:00
musb_core.c USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode 2010-10-22 10:21:58 -07:00
musb_core.h usb: musb: introduce DA8xx/OMAP-L1x glue layer 2010-10-22 10:21:52 -07:00
musb_debug.h USB: musb: make DBG() calls actually depend on CONFIG_USB_MUSB_DEBUG 2010-10-22 10:21:52 -07:00
musb_debugfs.c usb: musb_debugfs: don't use the struct file private_data field with seq_files 2010-09-20 16:04:56 -07:00
musb_dma.h USB: musb: add work around for Blackfin anomaly 05000456 2009-12-11 11:55:24 -08:00
musb_gadget.c usb: musb: gadget: only enable AUTOCLEAR in double buffered case 2010-10-22 10:21:56 -07:00
musb_gadget.h usb: musb: support ISO high bandwidth for gadget mode 2010-10-22 10:21:53 -07:00
musb_gadget_ep0.c usb: musb: gadget: restart request on clearing endpoint halt 2010-09-24 11:05:01 -07:00
musb_host.c usb: musb: host: support DMA transfers greater than max channel length 2010-10-22 10:21:54 -07:00
musb_host.h musb: add high bandwidth ISO support 2009-06-15 21:44:41 -07:00
musb_io.h USB: musb: Blackfin provides read/write I/O accessor in header files 2009-01-07 10:00:08 -08:00
musb_regs.h usb: musb: add ulpi access operations 2010-05-20 13:21:36 -07:00
musb_virthub.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
musbhsdma.c usb: musb: musbhsdma: increase max_len to 1MB 2010-10-22 10:21:53 -07:00
musbhsdma.h usb: musb: hsdma: use musb_read/writel 2010-05-20 13:21:32 -07:00
omap2430.c USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode 2010-10-22 10:21:58 -07:00
omap2430.h USB: musb: get rid of omap_readl/writel 2010-03-02 14:54:38 -08:00
tusb6010.c USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode 2010-10-22 10:21:58 -07:00
tusb6010.h USB: musb: Remove my email address from few musb related drivers 2009-04-23 14:15:27 -07:00
tusb6010_omap.c usb: Fix tusb6010 for DMA API 2010-04-30 09:25:09 -07:00