Updated from Linux LTS 3.10.25 to 3.10.26
This commit is contained in:
@@ -838,24 +838,22 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
|
||||
if (((hdr->flags & ISCSI_FLAG_CMD_READ) ||
|
||||
(hdr->flags & ISCSI_FLAG_CMD_WRITE)) && !hdr->data_length) {
|
||||
/*
|
||||
* Vmware ESX v3.0 uses a modified Cisco Initiator (v3.4.2)
|
||||
* that adds support for RESERVE/RELEASE. There is a bug
|
||||
* add with this new functionality that sets R/W bits when
|
||||
* neither CDB carries any READ or WRITE datapayloads.
|
||||
* From RFC-3720 Section 10.3.1:
|
||||
*
|
||||
* "Either or both of R and W MAY be 1 when either the
|
||||
* Expected Data Transfer Length and/or Bidirectional Read
|
||||
* Expected Data Transfer Length are 0"
|
||||
*
|
||||
* For this case, go ahead and clear the unnecssary bits
|
||||
* to avoid any confusion with ->data_direction.
|
||||
*/
|
||||
if ((hdr->cdb[0] == 0x16) || (hdr->cdb[0] == 0x17)) {
|
||||
hdr->flags &= ~ISCSI_FLAG_CMD_READ;
|
||||
hdr->flags &= ~ISCSI_FLAG_CMD_WRITE;
|
||||
goto done;
|
||||
}
|
||||
hdr->flags &= ~ISCSI_FLAG_CMD_READ;
|
||||
hdr->flags &= ~ISCSI_FLAG_CMD_WRITE;
|
||||
|
||||
pr_err("ISCSI_FLAG_CMD_READ or ISCSI_FLAG_CMD_WRITE"
|
||||
pr_warn("ISCSI_FLAG_CMD_READ or ISCSI_FLAG_CMD_WRITE"
|
||||
" set when Expected Data Transfer Length is 0 for"
|
||||
" CDB: 0x%02x. Bad iSCSI Initiator.\n", hdr->cdb[0]);
|
||||
return iscsit_add_reject_cmd(cmd,
|
||||
ISCSI_REASON_BOOKMARK_INVALID, buf);
|
||||
" CDB: 0x%02x, Fixing up flags\n", hdr->cdb[0]);
|
||||
}
|
||||
done:
|
||||
|
||||
if (!(hdr->flags & ISCSI_FLAG_CMD_READ) &&
|
||||
!(hdr->flags & ISCSI_FLAG_CMD_WRITE) && (hdr->data_length != 0)) {
|
||||
|
||||
Reference in New Issue
Block a user