From: Sergei Shtylyov Date: Wed, 29 Sep 2010 06:54:29 +0000 (+0300) Subject: USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode X-Git-Tag: v2.6.37-rc1~154^2~59 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f405387435a85a440d1ce16f3ca36e042281643a;p=pandora-kernel.git USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode Since commit 461972d8a4c94bc44f11a13046041c78a7cf18dd (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 Cc: stable Signed-off-by: Felipe Balbi Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed