diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2013-07-07 20:45:08 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2013-07-07 21:37:02 -0400 |
commit | ca40d24eb8fc3c194b4439493ecf6b2d703812b8 (patch) | |
tree | 21f60ab15645089919328cbffffe6c78c4fdc313 | |
parent | b79fafac70fc9bbe640b8193ed772eb850efdfe6 (diff) |
iser-target: Ignore non TEXT + LOGOUT opcodes for discovery
This patch adds a check in isert_rx_opcode() to ignore non TEXT + LOGOUT
opcodes when SessionType=Discovery has been negotiated.
Cc: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r-- | drivers/infiniband/ulp/isert/ib_isert.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index f02bfcc282e5..ecd16541896b 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c | |||
@@ -1066,11 +1066,19 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
1066 | { | 1066 | { |
1067 | struct iscsi_hdr *hdr = &rx_desc->iscsi_header; | 1067 | struct iscsi_hdr *hdr = &rx_desc->iscsi_header; |
1068 | struct iscsi_conn *conn = isert_conn->conn; | 1068 | struct iscsi_conn *conn = isert_conn->conn; |
1069 | struct iscsi_session *sess = conn->sess; | ||
1069 | struct iscsi_cmd *cmd; | 1070 | struct iscsi_cmd *cmd; |
1070 | struct isert_cmd *isert_cmd; | 1071 | struct isert_cmd *isert_cmd; |
1071 | int ret = -EINVAL; | 1072 | int ret = -EINVAL; |
1072 | u8 opcode = (hdr->opcode & ISCSI_OPCODE_MASK); | 1073 | u8 opcode = (hdr->opcode & ISCSI_OPCODE_MASK); |
1073 | 1074 | ||
1075 | if (sess->sess_ops->SessionType && | ||
1076 | (!(opcode & ISCSI_OP_TEXT) || !(opcode & ISCSI_OP_LOGOUT))) { | ||
1077 | pr_err("Got illegal opcode: 0x%02x in SessionType=Discovery," | ||
1078 | " ignoring\n", opcode); | ||
1079 | return 0; | ||
1080 | } | ||
1081 | |||
1074 | switch (opcode) { | 1082 | switch (opcode) { |
1075 | case ISCSI_OP_SCSI_CMD: | 1083 | case ISCSI_OP_SCSI_CMD: |
1076 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 1084 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); |