[SCSI] iscsi_tcp: drop session when itt does not match any command
authorMike Christie <michaelc@cs.wisc.edu>
Thu, 13 Dec 2007 18:43:37 +0000 (12:43 -0600)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Sat, 12 Jan 2008 00:28:45 +0000 (18:28 -0600)
A target should never send us a itt that does not match a running
task. If it does we do not really know what is coming down after the header,
unless we evaluate the hdr and do some guessing sometimes. However,
even if we know what is coming we probably do not have buffers for it or we
cannot respond (if it is a r2t for example), so just drop the session.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/iscsi_tcp.c

index ecba606e65210bb0a29fad5944ab238f0448c565..65df908019fd9144a4202872e1441106067d09c0 100644 (file)
@@ -755,11 +755,7 @@ iscsi_tcp_hdr_dissect(struct iscsi_conn *conn, struct iscsi_hdr *hdr)
        opcode = hdr->opcode & ISCSI_OPCODE_MASK;
        /* verify itt (itt encoding: age+cid+itt) */
        rc = iscsi_verify_itt(conn, hdr, &itt);
-       if (rc == ISCSI_ERR_NO_SCSI_CMD) {
-               /* XXX: what does this do? */
-               tcp_conn->in.datalen = 0; /* force drop */
-               return 0;
-       } else if (rc)
+       if (rc)
                return rc;
 
        debug_tcp("opcode 0x%x ahslen %d datalen %d\n",