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 b6e03074cb8..dd098cad337 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)   */  struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask)  { -	struct scsi_cmnd *cmd; -	unsigned char *buf; - -	cmd = scsi_host_alloc_command(shost, gfp_mask); +	struct scsi_cmnd *cmd = scsi_host_alloc_command(shost, gfp_mask);  	if (unlikely(!cmd)) {  		unsigned long flags; @@ -258,9 +255,15 @@ struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask)  		spin_unlock_irqrestore(&shost->free_list_lock, flags);  		if (cmd) { +			void *buf, *prot; +  			buf = cmd->sense_buffer; +			prot = cmd->prot_sdb; +  			memset(cmd, 0, sizeof(*cmd)); +  			cmd->sense_buffer = buf; +			cmd->prot_sdb = prot;  		}  	}  |