aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/gadget/inode.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
index 2a7162d89799..da85732fa993 100644
--- a/drivers/usb/gadget/inode.c
+++ b/drivers/usb/gadget/inode.c
@@ -1696,16 +1696,17 @@ gadgetfs_disconnect (struct usb_gadget *gadget)
1696{ 1696{
1697 struct dev_data *dev = get_gadget_data (gadget); 1697 struct dev_data *dev = get_gadget_data (gadget);
1698 1698
1699 spin_lock (&dev->lock);
1699 if (dev->state == STATE_UNCONNECTED) { 1700 if (dev->state == STATE_UNCONNECTED) {
1700 DBG (dev, "already unconnected\n"); 1701 DBG (dev, "already unconnected\n");
1701 return; 1702 goto exit;
1702 } 1703 }
1703 dev->state = STATE_UNCONNECTED; 1704 dev->state = STATE_UNCONNECTED;
1704 1705
1705 INFO (dev, "disconnected\n"); 1706 INFO (dev, "disconnected\n");
1706 spin_lock (&dev->lock);
1707 next_event (dev, GADGETFS_DISCONNECT); 1707 next_event (dev, GADGETFS_DISCONNECT);
1708 ep0_readable (dev); 1708 ep0_readable (dev);
1709exit:
1709 spin_unlock (&dev->lock); 1710 spin_unlock (&dev->lock);
1710} 1711}
1711 1712