USB: fix bugs in usb_(de)authorize_device
authorAlan Stern <stern@rowland.harvard.edu>
Tue, 8 Dec 2009 20:54:44 +0000 (15:54 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 23 Dec 2009 19:34:10 +0000 (11:34 -0800)
commitda307123c621b01cce147a4be313d8a754674f63
tree0f9270989a505c9717b9c70979a62f2407451a16
parent8d8558d10806b7e805cb80df867ebb0a453d4765
USB: fix bugs in usb_(de)authorize_device

This patch (as1315) fixes some bugs in the USB core authorization
code:

usb_deauthorize_device() should deallocate the device strings
instead of leaking them, and it should invoke
usb_destroy_configuration() (which does proper reference
counting) instead of freeing the config information directly.

usb_authorize_device() shouldn't change the device strings
until it knows that the authorization will succeed, and it should
autosuspend the device at the end (having autoresumed the
device at the start).

Because the device strings can be changed, the sysfs routines
to display the strings must protect the string pointers by
locking the device.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Acked-by: David Vrabel <david.vrabel@csr.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/hub.c
drivers/usb/core/sysfs.c