diff --git a/debian/changelog b/debian/changelog index bbf5d2243..77231bd99 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 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 000000000..1cc4be568 --- /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" +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 +Signed-off-by: James Bottomley +--- + 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 8649376f5..8647dc91e 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