Skip to content

Commit

Permalink
[SCSI] qla2xxx: Cover UNDERRUN case where SCSI status is set.
Browse files Browse the repository at this point in the history
Currently, if target sets the SCSI Status (with Check condition)
and there is no FCP residual bit set then driver  does not check
for dropped frame.  This could lead to data corruption.

Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
  • Loading branch information
Lalit Chandivade authored and James Bottomley committed Sep 5, 2010
1 parent 4142b19 commit 0374f55
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/scsi/qla2xxx/qla_isr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1706,19 +1706,20 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
cp->result = DID_ERROR << 16;
break;
}
} else if (!lscsi_status) {
} else {
DEBUG2(qla_printk(KERN_INFO, ha,
"scsi(%ld:%d:%d) Dropped frame(s) detected (0x%x "
"of 0x%x bytes).\n", vha->host_no, cp->device->id,
cp->device->lun, resid, scsi_bufflen(cp)));

cp->result = DID_ERROR << 16;
break;
cp->result = DID_ERROR << 16 | lscsi_status;
goto check_scsi_status;
}

cp->result = DID_OK << 16 | lscsi_status;
logit = 0;

check_scsi_status:
/*
* Check to see if SCSI Status is non zero. If so report SCSI
* Status.
Expand Down

0 comments on commit 0374f55

Please sign in to comment.