• Hindin Joseph's avatar
    USB: fix authorization and claimed port logic · c13b86a3
    Hindin Joseph authored
        It looks like I've run into some inconsistency in the USB stack behavior.
    
        The USB stack maintains, among others, two states for the attach
    USB device: authorized and owned. Authorization state is accessible to
    the user space code through correspondent sysfs files, the ownership
    can be set by claiming the hub's port with ioctl call. Both state may
    be set before the device is attached, by access the hub settings. When
    the new device is attached, both authorization and ownership prevent
    the kernel USB stack from setting the newly attached device
    configuration, but when the device is authorized, the ownership state
    is ignored. It looks like ignoring the ownership state on
    authorization make the stack behavior inconsistent; it also prevents
    the user space code from completely overriding configuration
    selection, important for implementing workarounds for bugs in the
    device configuration selection.
    
       The following patch makes the stack behavior more consistent, by
    moving ownership test into usb_choose_configuration - the later
    function is used both by generic_probe and usb_authorize_device
    Signed-off-by: default avatarJoseph Hindin <hindin@gmail.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c13b86a3
generic.c 6.88 KB