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>
This commit is contained in:
Родитель
b79fafac70
Коммит
ca40d24eb8
|
@ -1066,11 +1066,19 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc,
|
||||||
{
|
{
|
||||||
struct iscsi_hdr *hdr = &rx_desc->iscsi_header;
|
struct iscsi_hdr *hdr = &rx_desc->iscsi_header;
|
||||||
struct iscsi_conn *conn = isert_conn->conn;
|
struct iscsi_conn *conn = isert_conn->conn;
|
||||||
|
struct iscsi_session *sess = conn->sess;
|
||||||
struct iscsi_cmd *cmd;
|
struct iscsi_cmd *cmd;
|
||||||
struct isert_cmd *isert_cmd;
|
struct isert_cmd *isert_cmd;
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
u8 opcode = (hdr->opcode & ISCSI_OPCODE_MASK);
|
u8 opcode = (hdr->opcode & ISCSI_OPCODE_MASK);
|
||||||
|
|
||||||
|
if (sess->sess_ops->SessionType &&
|
||||||
|
(!(opcode & ISCSI_OP_TEXT) || !(opcode & ISCSI_OP_LOGOUT))) {
|
||||||
|
pr_err("Got illegal opcode: 0x%02x in SessionType=Discovery,"
|
||||||
|
" ignoring\n", opcode);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case ISCSI_OP_SCSI_CMD:
|
case ISCSI_OP_SCSI_CMD:
|
||||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче