diff options
Diffstat (limited to 'drivers/scsi/scsi.c')
-rw-r--r-- | drivers/scsi/scsi.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index b6e03074cb8f..dd098cad337b 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -241,10 +241,7 @@ scsi_host_alloc_command(struct Scsi_Host *shost, gfp_t gfp_mask) | |||
241 | */ | 241 | */ |
242 | struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) | 242 | struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) |
243 | { | 243 | { |
244 | struct scsi_cmnd *cmd; | 244 | struct scsi_cmnd *cmd = scsi_host_alloc_command(shost, gfp_mask); |
245 | unsigned char *buf; | ||
246 | |||
247 | cmd = scsi_host_alloc_command(shost, gfp_mask); | ||
248 | 245 | ||
249 | if (unlikely(!cmd)) { | 246 | if (unlikely(!cmd)) { |
250 | unsigned long flags; | 247 | unsigned long flags; |
@@ -258,9 +255,15 @@ struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) | |||
258 | spin_unlock_irqrestore(&shost->free_list_lock, flags); | 255 | spin_unlock_irqrestore(&shost->free_list_lock, flags); |
259 | 256 | ||
260 | if (cmd) { | 257 | if (cmd) { |
258 | void *buf, *prot; | ||
259 | |||
261 | buf = cmd->sense_buffer; | 260 | buf = cmd->sense_buffer; |
261 | prot = cmd->prot_sdb; | ||
262 | |||
262 | memset(cmd, 0, sizeof(*cmd)); | 263 | memset(cmd, 0, sizeof(*cmd)); |
264 | |||
263 | cmd->sense_buffer = buf; | 265 | cmd->sense_buffer = buf; |
266 | cmd->prot_sdb = prot; | ||
264 | } | 267 | } |
265 | } | 268 | } |
266 | 269 | ||