alistair23-linux/drivers/usb/storage
Bjørn Mork ab4b71644a USB: storage: fix Huawei mode switching regression
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: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-07 12:23:17 +08:00
..
alauda.c usb: remove libusual 2012-09-05 17:21:36 -07:00
cypress_atacb.c usb: remove libusual 2012-09-05 17:21:36 -07:00
datafab.c usb: remove libusual 2012-09-05 17:21:36 -07:00
debug.c
debug.h
ene_ub6250.c usb: remove libusual 2012-09-05 17:21:36 -07:00
freecom.c usb: remove libusual 2012-09-05 17:21:36 -07:00
initializers.c USB: storage: fix Huawei mode switching regression 2013-03-07 12:23:17 +08:00
initializers.h USB: storage: fix Huawei mode switching regression 2013-03-07 12:23:17 +08:00
isd200.c usb: remove libusual 2012-09-05 17:21:36 -07:00
jumpshot.c usb: remove libusual 2012-09-05 17:21:36 -07:00
karma.c usb: remove libusual 2012-09-05 17:21:36 -07:00
Kconfig USB: mark uas driver as BROKEN 2012-11-28 13:28:54 -08:00
Makefile usb: remove libusual 2012-09-05 17:21:36 -07:00
onetouch.c usb: remove libusual 2012-09-05 17:21:36 -07:00
option_ms.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
option_ms.h USB: unusual dev for Option N.V. ZeroCD modems 2009-01-07 10:00:09 -08:00
protocol.c USB: storage: fixed space issues in coding style. 2012-06-13 15:30:38 -07:00
protocol.h USB: usb-storage: merge ATAPI and QIC-157 protocol routines 2009-01-07 09:59:57 -08:00
realtek_cr.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
scsiglue.c [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
scsiglue.h
sddr09.c usb: remove libusual 2012-09-05 17:21:36 -07:00
sddr55.c usb: remove libusual 2012-09-05 17:21:36 -07:00
shuttle_usbat.c usb: remove libusual 2012-09-05 17:21:36 -07:00
sierra_ms.c USB: sierra_ms: don't keep unused variable 2012-09-21 09:50:02 -07:00
sierra_ms.h
transport.c usb: convert USB_QUIRK_RESET_MORPHS to USB_QUIRK_RESET 2012-08-20 14:38:08 -07:00
transport.h usb/storage: a couple defines from drivers/usb/storage/transport.h to include/linux/usb/storage.h 2012-02-28 11:05:18 -08:00
uas.c usb-uas: set max_lun and max_channel 2013-01-25 09:56:54 -08:00
unusual_alauda.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_cypress.h USB: usb-storage: unusual_devs update for Super TOP SATA bridge 2013-02-14 09:22:02 -08:00
unusual_datafab.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_devs.h USB: storage: fix Huawei mode switching regression 2013-03-07 12:23:17 +08:00
unusual_ene_ub6250.h Staging: Merge ENE UB6250 SD card codes from keucr to drivers/usb/storage 2011-03-07 13:40:59 -08:00
unusual_freecom.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_isd200.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_jumpshot.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_karma.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_onetouch.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_realtek.h usb-storage: fix up the unusual_realtek device list 2011-05-17 11:56:28 -07:00
unusual_sddr09.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_sddr55.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_usbat.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
usb.c Merge usb-linus branch into usb-next 2013-02-08 12:03:11 -08:00
usb.h usb-storage: fix freezing of the scanning thread 2012-02-21 16:29:15 -08:00
usual-tables.c USB: storage: Define a new macro for USB storage match rules 2013-02-04 10:40:16 -08:00