aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiebing Li <jiebing.li@intel.com>2014-12-11 00:26:29 -0500
committerFelipe Balbi <felipe.balbi@linux.intel.com>2016-03-29 02:30:31 -0400
commitad14d4e0308afda06a60036020a15025571604af (patch)
treed6d4c8fed5984f1ebb7e0b09f03743d3464bb674
parentf59dcab176293b646e1358144c93c58c3cda2813 (diff)
usb: dwc3: gadget: release spin lock during gadget resume
It's a requirement that we release controller's lock while calling gadget API function pointers. This patch just fixes that long standing bug. Signed-off-by: Jiebing Li <jiebing.li@intel.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
-rw-r--r--drivers/usb/dwc3/gadget.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 3ac170f9d94d..3d2c53e4ac92 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2487,7 +2487,11 @@ static void dwc3_gadget_wakeup_interrupt(struct dwc3 *dwc)
2487 * implemented. 2487 * implemented.
2488 */ 2488 */
2489 2489
2490 dwc->gadget_driver->resume(&dwc->gadget); 2490 if (dwc->gadget_driver && dwc->gadget_driver->resume) {
2491 spin_unlock(&dwc->lock);
2492 dwc->gadget_driver->resume(&dwc->gadget);
2493 spin_lock(&dwc->lock);
2494 }
2491} 2495}
2492 2496
2493static void dwc3_gadget_linksts_change_interrupt(struct dwc3 *dwc, 2497static void dwc3_gadget_linksts_change_interrupt(struct dwc3 *dwc,