diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2017-06-21 10:07:52 +0300 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-06-21 10:07:52 +0300 |
commit | f0cd9ae5d0df8668e76359a3e0e99856aa9c53b9 (patch) | |
tree | 84d3297b16fa7e373f2eabef56cd12ae5a9b8a29 /drivers/usb/gadget/legacy/inode.c | |
parent | 098b0e01a91c42aaaf0425605cd126b03fcb0bcf (diff) | |
parent | 8e6cec1c7c5afa489687c90be15d6ed82c742975 (diff) | |
download | linux-f0cd9ae5d0df8668e76359a3e0e99856aa9c53b9.tar.xz |
Merge branch 'timers/urgent' into timers/core
Pick up dependent changes.
Diffstat (limited to 'drivers/usb/gadget/legacy/inode.c')
-rw-r--r-- | drivers/usb/gadget/legacy/inode.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c index b9ca0a26cbd9..684900fcfe24 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c @@ -1183,8 +1183,10 @@ dev_release (struct inode *inode, struct file *fd) /* closing ep0 === shutdown all */ - if (dev->gadget_registered) + if (dev->gadget_registered) { usb_gadget_unregister_driver (&gadgetfs_driver); + dev->gadget_registered = false; + } /* at this point "good" hardware has disconnected the * device from USB; the host won't see it any more. @@ -1677,9 +1679,10 @@ static void gadgetfs_suspend (struct usb_gadget *gadget) { struct dev_data *dev = get_gadget_data (gadget); + unsigned long flags; INFO (dev, "suspended from state %d\n", dev->state); - spin_lock (&dev->lock); + spin_lock_irqsave(&dev->lock, flags); switch (dev->state) { case STATE_DEV_SETUP: // VERY odd... host died?? case STATE_DEV_CONNECTED: @@ -1690,7 +1693,7 @@ gadgetfs_suspend (struct usb_gadget *gadget) default: break; } - spin_unlock (&dev->lock); + spin_unlock_irqrestore(&dev->lock, flags); } static struct usb_gadget_driver gadgetfs_driver = { |