aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <benh@debian.org>2012-10-21 02:43:35 +0000
committerBen Hutchings <benh@debian.org>2012-10-21 02:43:35 +0000
commit6984ee25108adb7b898b3f3d69635831ef762d2b (patch)
tree25568725bafb1541c72232b5b65f436e5a9939f3
parent24b6ca0b3af650f6f51e063e35d155008226564a (diff)
downloadkernel_replicant_linux-6984ee25108adb7b898b3f3d69635831ef762d2b.tar.gz
kernel_replicant_linux-6984ee25108adb7b898b3f3d69635831ef762d2b.tar.bz2
kernel_replicant_linux-6984ee25108adb7b898b3f3d69635831ef762d2b.zip
[x86] storvsc: Account for in-transit packets in the RESET path
svn path=/dists/sid/linux/; revision=19440
-rw-r--r--debian/changelog1
-rw-r--r--debian/patches/bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch35
-rw-r--r--debian/patches/series1
3 files changed, 37 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index bbf5d2243520..77231bd99cd3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -93,6 +93,7 @@ linux (3.2.32-1) UNRELEASED; urgency=low
- rt: rwsem/rwlock: lockdep annotations
- sched: Better debug output for might sleep
- stomp_machine: Use mutex_trylock when called from inactive cpu
+ * [x86] storvsc: Account for in-transit packets in the RESET path
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Sep 2012 14:19:46 +0200
diff --git a/debian/patches/bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch b/debian/patches/bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch
new file mode 100644
index 000000000000..1cc4be568951
--- /dev/null
+++ b/debian/patches/bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch
@@ -0,0 +1,35 @@
+From: "K. Y. Srinivasan" <kys@microsoft.com>
+Date: Tue, 2 Oct 2012 11:03:31 -0700
+Subject: [SCSI] storvsc: Account for in-transit packets in the RESET path
+
+commit 5c1b10ab7f93d24f29b5630286e323d1c5802d5c upstream.
+
+Properly account for I/O in transit before returning from the RESET call.
+In the absense of this patch, we could have a situation where the host may
+respond to a command that was issued prior to the issuance of the RESET
+command at some arbitrary time after responding to the RESET command.
+Currently, the host does not do anything with the RESET command.
+
+Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+---
+ drivers/scsi/storvsc_drv.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
+index 528d52b..0144078 100644
+--- a/drivers/scsi/storvsc_drv.c
++++ b/drivers/scsi/storvsc_drv.c
+@@ -1221,7 +1221,12 @@ static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd)
+ /*
+ * At this point, all outstanding requests in the adapter
+ * should have been flushed out and return to us
++ * There is a potential race here where the host may be in
++ * the process of responding when we return from here.
++ * Just wait for all in-transit packets to be accounted for
++ * before we return from here.
+ */
++ storvsc_wait_to_drain(stor_device);
+
+ return SUCCESS;
+ }
diff --git a/debian/patches/series b/debian/patches/series
index 8649376f57b6..8647dc91ee0e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -401,3 +401,4 @@ bugfix/all/SUNRPC-Set-alloc_slot-for-backchannel-tcp-ops.patch
debian/iwlwifi-do-not-request-unreleased-firmware.patch
debian/hid-avoid-ABI-change-in-3.2.31.patch
debian/xfrm-avoid-ABI-change-in-3.2.31.patch
+bugfix/x86/SCSI-storvsc-Account-for-in-transit-packets-in-the-R.patch