]> git.baikalelectronics.ru Git - kernel.git/commit
USB: storage: When a device returns no sense data, call it a Hardware Error
authorAlan Stern <stern@rowland.harvard.edu>
Tue, 6 Oct 2009 18:07:57 +0000 (14:07 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Oct 2009 20:52:08 +0000 (13:52 -0700)
commit3c2db5f0807e9c701eb775971fa4313a5690fe27
treef2b86a85b8a0a1c32d362f1e436b9ab32edfa114
parent6e6aa2eac5c39a874830324ebd38296529b958dd
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>
drivers/usb/storage/transport.c