[SCSI] qla2xxx: Validate mid-layer 'underflow' during check-condition handling.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>

authored by

Shyam Sundar and committed by
James Bottomley
8084fe16 5881569b

+19
+19
drivers/scsi/qla2xxx/qla_isr.c
··· 1062 1062 cp->device->id, cp->device->lun, cp, 1063 1063 cp->serial_number)); 1064 1064 1065 + /* 1066 + * In case of a Underrun condition, set both the lscsi 1067 + * status and the completion status to appropriate 1068 + * values. 1069 + */ 1070 + if (resid && 1071 + ((unsigned)(cp->request_bufflen - resid) < 1072 + cp->underflow)) { 1073 + DEBUG2(qla_printk(KERN_INFO, ha, 1074 + "scsi(%ld:%d:%d:%d): Mid-layer underflow " 1075 + "detected (%x of %x bytes)...returning " 1076 + "error status.\n", ha->host_no, 1077 + cp->device->channel, cp->device->id, 1078 + cp->device->lun, resid, 1079 + cp->request_bufflen)); 1080 + 1081 + cp->result = DID_ERROR << 16 | lscsi_status; 1082 + } 1083 + 1065 1084 if (sense_len) 1066 1085 DEBUG5(qla2x00_dump_buffer(cp->sense_buffer, 1067 1086 CMD_ACTUAL_SNSLEN(cp)));