usb: renesas_usbhs: fix spinlock suspected in a gadget complete function
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Mon, 16 Mar 2015 07:36:48 +0000 (16:36 +0900)
committerFelipe Balbi <balbi@ti.com>
Thu, 19 Mar 2015 16:28:15 +0000 (11:28 -0500)
commit00f30d29b497577954b20237b405e9d22b5286c2
tree65af4661113d147de8fbbd2bd32479ae10bf83ec
parent990919cad55a8c38fc73b0a6a0c9e5e4e927a5f8
usb: renesas_usbhs: fix spinlock suspected in a gadget complete function

According to the gadget.h, a "complete" function will always be called
with interrupts disabled. However, sometimes usbhsg_queue_pop() function
is called with interrupts enabled. So, this function should be held by
usbhs_lock() to disable interruption. Also, this driver has to call
spin_unlock() to avoid spinlock recursion by this driver before calling
usb_gadget_giveback_request().
Otherwise, there is possible to cause a spinlock suspected in a gadget
complete function.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/renesas_usbhs/mod_gadget.c