• Bjørn Mork's avatar
    USB: storage: fix Huawei mode switching regression · ab4b7164
    Bjørn Mork authored
    This reverts commit 200e0d99 ("USB: storage: optimize to match the
    Huawei USB storage devices and support new switch command" and the
    followup bugfix commit cd060956 ("USB: storage: properly handle
    the endian issues of idProduct").
    
    The commit effectively added a large number of Huawei devices to
    the deprecated usb-storage mode switching logic.  Many of these
    devices have been in use and supported by the userspace
    usb_modeswitch utility for years.  Forcing the switching inside
    the kernel causes a number of regressions as a result of ignoring
    existing onfigurations, and also completely takes away the ability
    to configure mode switching per device/system/user.
    
    Known regressions caused by this:
     - Some of the devices support multiple modes, using different
      switching commands.  There are existing configurations taking
      advantage of this.
    
     - There is a real use case for disabling mode switching and
      instead mounting the exposed storage device. This becomes
      impossible with switching logic inside the usb-storage driver.
    
     - At least on device fail as a result of the usb-storage switching
      command, becoming completely unswitchable. This is possibly a
      firmware bug, but still a regression because the device work as
      expected using usb_modeswitch defaults.
    
    In-kernel mode switching was deprecated years ago with the
    development of the more user friendly userspace alternatives. The
    existing list of devices in usb-storage was only kept to prevent
    breaking already working systems.  The long term plan is to remove
    the list, not to add to it. Ref:
    http://permalink.gmane.org/gmane.linux.usb.general/28543
    
    Cc: <fangxiaozhi@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ab4b7164
initializers.c 3.48 KB