linux/drivers/usb/storage
Alan Stern f1a0743bc0 USB: storage: When a device returns no sense data, call it a Hardware Error
This patch (as1294) fixes a problem that has plagued users for several
kernel releases.  Some USB mass-storage devices don't return any sense
data when they encounter certain kinds of errors.  The SCSI layer
interprets this to mean that the operation should be retried, and the
same thing happens -- over and over again with no limit.  In some
circumstances (such as when a bus reset occurs) that is the right
thing to do, but not here.

The patch checks for this condition (a transport failure with no sense
data) and changes the result code to DID_ERROR and the sense code to
Hardware Error.  This does get only a limited number of retries, and
so the command will fail relatively quickly instead of getting stuck
in an infinite loop.

This fixes a large part of Bugzilla #14118.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Mantas Mikulenas <grawity@gmail.com>
CC: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-10-09 13:52:08 -07:00
..
alauda.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
cypress_atacb.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
datafab.c USB: storage: Drop an unneeded a NULL test 2009-09-23 06:46:29 -07:00
debug.c USB: remove CVS keywords 2008-07-21 15:15:55 -07:00
debug.h USB: remove CVS keywords 2008-07-21 15:15:55 -07:00
freecom.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
initializers.c USB: usb-storage fails to attach to Huawei Datacard cdrom device 2009-09-23 06:46:32 -07:00
initializers.h USB: remove CVS keywords 2008-07-21 15:15:55 -07:00
isd200.c isd200: use ATA_* defines instead of *_STAT and *_ERR ones 2009-04-01 21:42:25 +02:00
jumpshot.c USB: storage: Drop an unneeded a NULL test 2009-09-23 06:46:29 -07:00
karma.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
Kconfig usb-storage: make onetouch a separate module 2009-03-24 16:20:35 -07:00
libusual.c usb-storage: prepare for subdriver separation 2009-03-24 16:20:34 -07:00
Makefile usb-storage: fix mistake in Makefile 2009-04-17 10:50:26 -07:00
onetouch.c USB: storage: fix a resume path GFP_NOIO must be used 2009-09-23 06:46:15 -07:00
option_ms.c USB: Fix option_ms regression in 2.6.31-rc2 2009-07-12 15:16:40 -07: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: prepare for subdriver separation 2009-03-24 16:20:34 -07:00
protocol.h USB: usb-storage: merge ATAPI and QIC-157 protocol routines 2009-01-07 09:59:57 -08:00
scsiglue.c block: Use accessor functions for queue limits 2009-05-22 23:22:54 +02:00
scsiglue.h USB: remove CVS keywords 2008-07-21 15:15:55 -07:00
sddr09.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
sddr55.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
shuttle_usbat.c USB: usb-storage: added missing MODULE_LICENSE("GPL") for usb-storage ums-* modules 2009-03-24 16:20:35 -07:00
sierra_ms.c USB: usb-storage: fix return values from init functions 2009-06-15 21:44:46 -07:00
sierra_ms.h USB Storage Sierra: TRU-Install feature update 2008-08-13 17:32:51 -07:00
transport.c USB: storage: When a device returns no sense data, call it a Hardware Error 2009-10-09 13:52:08 -07:00
transport.h USB: usb-storage: merge CB and CBI transport routines 2009-01-07 09:59:57 -08:00
unusual_alauda.h usb-storage: make alauda a separate module 2009-03-24 16:20:35 -07:00
unusual_cypress.h usb-storage: make cypress_atacb a separate module 2009-03-24 16:20:34 -07:00
unusual_datafab.h usb-storage: make datafab a separate module 2009-03-24 16:20:34 -07:00
unusual_devs.h USB: storage: iRiver P7 UNUSUAL_DEV patch 2009-10-09 13:52:07 -07:00
unusual_freecom.h usb-storage: make freecom a separate module 2009-03-24 16:20:34 -07:00
unusual_isd200.h usb-storage: make isd200 a separate module 2009-03-24 16:20:34 -07:00
unusual_jumpshot.h usb-storage: make jumpshot a separate module 2009-03-24 16:20:34 -07:00
unusual_karma.h usb-storage: make karma a separate module 2009-03-24 16:20:35 -07:00
unusual_onetouch.h usb-storage: make onetouch a separate module 2009-03-24 16:20:35 -07:00
unusual_sddr09.h usb-storage: make sddr09 a separate module 2009-03-24 16:20:34 -07:00
unusual_sddr55.h usb-storage: make sddr55 a separate module 2009-03-24 16:20:34 -07:00
unusual_usbat.h usb-storage: make shuttle_usbat a separate module 2009-03-24 16:20:34 -07:00
usb.c usb-storage: make onetouch a separate module 2009-03-24 16:20:35 -07:00
usb.h usb-storage: prepare for subdriver separation 2009-03-24 16:20:34 -07:00
usual-tables.c usb-storage: make onetouch a separate module 2009-03-24 16:20:35 -07:00