From david-b@pacbell.net Wed Aug 2 23:41:43 2006 Subject: USB: correct locking in gadgetfs_disconnect Date: Monday 26 June 2006 7:46 am From: Milan Svoboda To: linux-usb-devel@lists.sourceforge.net Message-Id: <200608022330.42170.david-b@pacbell.net> 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 Signed-off-by: David Brownell Signed-off-by: Greg Kroah-Hartman --- drivers/usb/gadget/inode.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --- gregkh-2.6.orig/drivers/usb/gadget/inode.c +++ gregkh-2.6/drivers/usb/gadget/inode.c @@ -1696,16 +1696,17 @@ gadgetfs_disconnect (struct usb_gadget * { struct dev_data *dev = get_gadget_data (gadget); + spin_lock (&dev->lock); if (dev->state == STATE_UNCONNECTED) { DBG (dev, "already unconnected\n"); - return; + goto exit; } dev->state = STATE_UNCONNECTED; INFO (dev, "disconnected\n"); - spin_lock (&dev->lock); next_event (dev, GADGETFS_DISCONNECT); ep0_readable (dev); +exit: spin_unlock (&dev->lock); }