summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/mv_u3d_core.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman2013-09-17 22:00:43 +0200
committerGreg Kroah-Hartman2013-09-17 22:00:43 +0200
commit42f4891ca29a3c1535692a24acefb7015bbbc077 (patch)
tree4866cedc093bb53e92f531c35b7eaa92f8e9221d /drivers/usb/gadget/mv_u3d_core.c
parentUSB: pl2303: distinguish between original and cloned HX chips (diff)
parentusb: s3c-hsotg: do not disconnect gadget when receiving ErlySusp intr (diff)
downloadkernel-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.c3
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) {