diff options
author | Greg Kroah-Hartman | 2013-09-17 22:00:43 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2013-09-17 22:00:43 +0200 |
commit | 42f4891ca29a3c1535692a24acefb7015bbbc077 (patch) | |
tree | 4866cedc093bb53e92f531c35b7eaa92f8e9221d /drivers/usb/gadget/mv_u3d_core.c | |
parent | USB: pl2303: distinguish between original and cloned HX chips (diff) | |
parent | usb: s3c-hsotg: do not disconnect gadget when receiving ErlySusp intr (diff) | |
download | kernel-qcow2-linux-42f4891ca29a3c1535692a24acefb7015bbbc077.tar.gz kernel-qcow2-linux-42f4891ca29a3c1535692a24acefb7015bbbc077.tar.xz kernel-qcow2-linux-42f4891ca29a3c1535692a24acefb7015bbbc077.zip |
Merge tag 'fixes-for-v3.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus
Felipe writes:
usb: fixes for v3.12-rc2
Here's first set of fixes for v3.12-rc series, patches have
been soaking in linux-usb for a while now.
We have the usual sparse and build warnings, a Kconfig fix
to a mismerge on dwc3 Kconfig, fix for a possible memory leak
in dwc3, s3c-hsotg won't disconnect when bus goes idle, locking
fix in mv_u3d_core, endpoint disable fix in f_mass_storage.
We also have one device ID added to dwc3's PCI glue layer in order
to support Intel's BayTrail devices.
Signed-of-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/mv_u3d_core.c')
-rw-r--r-- | drivers/usb/gadget/mv_u3d_core.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c index bbb6e98c4384..561b30efb8ee 100644 --- a/drivers/usb/gadget/mv_u3d_core.c +++ b/drivers/usb/gadget/mv_u3d_core.c @@ -645,6 +645,7 @@ static int mv_u3d_ep_disable(struct usb_ep *_ep) struct mv_u3d_ep *ep; struct mv_u3d_ep_context *ep_context; u32 epxcr, direction; + unsigned long flags; if (!_ep) return -EINVAL; @@ -661,7 +662,9 @@ static int mv_u3d_ep_disable(struct usb_ep *_ep) direction = mv_u3d_ep_dir(ep); /* nuke all pending requests (does flush) */ + spin_lock_irqsave(&u3d->lock, flags); mv_u3d_nuke(ep, -ESHUTDOWN); + spin_unlock_irqrestore(&u3d->lock, flags); /* Disable the endpoint for Rx or Tx and reset the endpoint type */ if (direction == MV_U3D_EP_DIR_OUT) { |