USB: correct locking in gadgetfs_disconnect
This patch moves spin_lock (&dev->lock) before first use of dev. I think that test to the state of device should be protected with this spin_lock... Signed-off-by: Milan Svoboda <msvoboda@ra.rockwell.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
17efe15525
commit
07cb7f23d0
@@ -1696,16 +1696,17 @@ gadgetfs_disconnect (struct usb_gadget *gadget)
|
|||||||
{
|
{
|
||||||
struct dev_data *dev = get_gadget_data (gadget);
|
struct dev_data *dev = get_gadget_data (gadget);
|
||||||
|
|
||||||
|
spin_lock (&dev->lock);
|
||||||
if (dev->state == STATE_UNCONNECTED) {
|
if (dev->state == STATE_UNCONNECTED) {
|
||||||
DBG (dev, "already unconnected\n");
|
DBG (dev, "already unconnected\n");
|
||||||
return;
|
goto exit;
|
||||||
}
|
}
|
||||||
dev->state = STATE_UNCONNECTED;
|
dev->state = STATE_UNCONNECTED;
|
||||||
|
|
||||||
INFO (dev, "disconnected\n");
|
INFO (dev, "disconnected\n");
|
||||||
spin_lock (&dev->lock);
|
|
||||||
next_event (dev, GADGETFS_DISCONNECT);
|
next_event (dev, GADGETFS_DISCONNECT);
|
||||||
ep0_readable (dev);
|
ep0_readable (dev);
|
||||||
|
exit:
|
||||||
spin_unlock (&dev->lock);
|
spin_unlock (&dev->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user