diff options
-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); |