USB: change locking for device-level autosuspend
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 8 Jan 2010 17:56:19 +0000 (12:56 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:54:08 +0000 (14:54 -0800)
commit62e299e61a6ffe8131fa85a984c3058b68586f5d
treed10709c5b5e6d280e1329c7ed4f30f990246893e
parent0f3dda9f7ff2db8dbf4d6fbab4d4438251446002
USB: change locking for device-level autosuspend

This patch (as1323) changes the locking requirements for
usb_autosuspend_device(), usb_autoresume_device(), and
usb_try_autosuspend_device().  This isn't a very important change;
mainly it's meant to make the locking more uniform.

The most tricky part of the patch involves changes to usbdev_open().
To avoid an ABBA locking problem, it was necessary to reduce the
region protected by usbfs_mutex.  Since that mutex now protects only
against simultaneous open and remove, this posed no difficulty -- its
scope was larger than necessary.

And it turns out that usbfs_mutex is no longer needed in
usbdev_release() at all.  The list of usbfs "ps" structures is now
protected by the device lock instead of by usbfs_mutex.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/devio.c
drivers/usb/core/driver.c
drivers/usb/core/sysfs.c