diff --git a/debian/changelog b/debian/changelog index ce349caa4..2f4410cee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -228,6 +228,7 @@ linux (3.14.7-1) UNRELEASED; urgency=medium * auditsc: audit_krule mask accesses need bounds checking (CVE-2014-3917) * fs,userns: Change inode_capable to capable_wrt_inode_uidgid (CVE-2014-4014) + * SCSI: Fix spurious request sense in error handling (regression in 3.14) -- Ian Campbell Fri, 06 Jun 2014 18:18:41 +0100 diff --git a/debian/patches/bugfix/all/SCSI-Fix-spurious-request-sense-in-error-handling.patch b/debian/patches/bugfix/all/SCSI-Fix-spurious-request-sense-in-error-handling.patch new file mode 100644 index 000000000..5cdfcb6d4 --- /dev/null +++ b/debian/patches/bugfix/all/SCSI-Fix-spurious-request-sense-in-error-handling.patch @@ -0,0 +1,38 @@ +From: James Bottomley +Date: Fri, 28 Mar 2014 10:50:17 -0700 +Subject: [SCSI] Fix spurious request sense in error handling +Origin: https://git.kernel.org/linus/d555a2abf3481f81303d835046a5ec2c4fb3ca8e + +We unconditionally execute scsi_eh_get_sense() to make sure all failed +commands that should have sense attached, do. However, the routine forgets +that some commands, because of the way they fail, will not have any sense code +... we should not bother them with a REQUEST_SENSE command. Fix this by +testing to see if we actually got a CHECK_CONDITION return and skip asking for +sense if we don't. + +Tested-by: Alan Stern +Signed-off-by: James Bottomley +--- + drivers/scsi/scsi_error.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c +index 771c16b..d020149 100644 +--- a/drivers/scsi/scsi_error.c ++++ b/drivers/scsi/scsi_error.c +@@ -1157,6 +1157,15 @@ int scsi_eh_get_sense(struct list_head *work_q, + __func__)); + break; + } ++ if (status_byte(scmd->result) != CHECK_CONDITION) ++ /* ++ * don't request sense if there's no check condition ++ * status because the error we're processing isn't one ++ * that has a sense code (and some devices get ++ * confused by sense requests out of the blue) ++ */ ++ continue; ++ + SCSI_LOG_ERROR_RECOVERY(2, scmd_printk(KERN_INFO, scmd, + "%s: requesting sense\n", + current->comm)); diff --git a/debian/patches/series b/debian/patches/series index d177b96ae..414f924b6 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -95,3 +95,4 @@ debian/drivers-base-platform-avoid-abi-change-in-3.14.6.patch debian/dma-avoid-abi-change-in-3.14.6.patch bugfix/all/fs-userns-change-inode_capable-to-capable_wrt_inode_uidgid.patch debian/vfs-avoid-abi-change-for-cve-2014-4014.patch +bugfix/all/SCSI-Fix-spurious-request-sense-in-error-handling.patch