aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/gadget/legacy/inode.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c
index 684900fcfe24..956b3dc7c3a4 100644
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -983,11 +983,14 @@ ep0_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
983 retval = -EIO; 983 retval = -EIO;
984 else { 984 else {
985 len = min (len, (size_t)dev->req->actual); 985 len = min (len, (size_t)dev->req->actual);
986// FIXME don't call this with the spinlock held ... 986 ++dev->udc_usage;
987 spin_unlock_irq(&dev->lock);
987 if (copy_to_user (buf, dev->req->buf, len)) 988 if (copy_to_user (buf, dev->req->buf, len))
988 retval = -EFAULT; 989 retval = -EFAULT;
989 else 990 else
990 retval = len; 991 retval = len;
992 spin_lock_irq(&dev->lock);
993 --dev->udc_usage;
991 clean_req (dev->gadget->ep0, dev->req); 994 clean_req (dev->gadget->ep0, dev->req);
992 /* NOTE userspace can't yet choose to stall */ 995 /* NOTE userspace can't yet choose to stall */
993 } 996 }