diff options
author | Christoph Hellwig <hch@lst.de> | 2017-02-21 10:04:55 +0100 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-02-21 12:51:54 -0700 |
commit | ee5242360424b9b967454e9183767323d10cf985 (patch) | |
tree | 2500c4a89cae0d5363fe930ffeb2ff14626babb2 /drivers/scsi/scsi_lib.c | |
parent | 772c8f6f3bbd3ceb94a89373473083e3e1113554 (diff) | |
download | linux-ee5242360424b9b967454e9183767323d10cf985.tar.gz linux-ee5242360424b9b967454e9183767323d10cf985.tar.bz2 linux-ee5242360424b9b967454e9183767323d10cf985.zip |
scsi: zero per-cmd driver data before each I/O
Without this drivers that don't clear the state themselves can see off
effects. For example Hyper-V VMs using the storvsc driver will often
hang during boot due to uncleared Test Unit Ready failures.
Fixes: e9c787e6 ("scsi: allocate scsi_cmnd structures as part of struct request")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Dexuan Cui <decui@microsoft.com>
Tested-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 912fbc3b4543..3e32dc954c3c 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1167,7 +1167,7 @@ void scsi_init_command(struct scsi_device *dev, struct scsi_cmnd *cmd) /* zero out the cmd, except for the embedded scsi_request */ memset((char *)cmd + sizeof(cmd->req), 0, - sizeof(*cmd) - sizeof(cmd->req)); + sizeof(*cmd) - sizeof(cmd->req) + dev->host->hostt->cmd_size); cmd->device = dev; cmd->sense_buffer = buf; |