• Alan Stern's avatar
    USB: fix substandard locking for the sysfs files · 232275a0
    Alan Stern authored
    This patch straightens out some locking issues in the USB sysfs
    interface:
    
    	Deauthorization will destroy existing configurations.
    	Attributes that read from udev->actconfig need to lock the
    	device to prevent races.  Likewise for the rawdescriptor
    	values.
    
    	Attributes that access an interface's current alternate
    	setting should use ACCESS_ONCE() to obtain the cur_altsetting
    	pointer, to protect against concurrent altsetting changes.
    
    	The supports_autosuspend() attribute routine accesses values
    	from an interface's driver, so it should lock the interface
    	(rather than the usb_device) to protect against concurrent
    	unbinds.  Once this is done, the routine can be simplified
    	considerably.
    
    Scalar values that are stored directly in the usb_device structure are
    always available.  They do not require any locking.  The same is true
    of the cached interface string descriptor, because it is not
    deallocated until the usb_host_interface structure is destroyed.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    CC: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    232275a0
sysfs.c 24.7 KB