This is a note to let you know that I've just added the patch titled

    iscsi-target: Always send a response before terminating iSCSI connection

to the 3.4-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     
iscsi-target-always-send-a-response-before-terminating-iscsi-connection.patch
and it can be found in the queue-3.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 9ef928b0104af7c05b03f6a40bffe225b4f4c9e4 Mon Sep 17 00:00:00 2001
From: Roland Dreier <[email protected]>
Date: Mon, 5 Nov 2012 18:02:42 -0800
Subject: iscsi-target: Always send a response before terminating iSCSI 
connection

From: Roland Dreier <[email protected]>

commit 1c5c12c666fda27c7c494b34934a0a0631a48130 upstream.

There are some cases, for example when the initiator sends an
out-of-bounds ErrorRecoveryLevel value, where the iSCSI target
terminates the connection without sending back any error.  Audit the
login path and add appropriate iscsit_tx_login_rsp() calls to make
sure this doesn't happen.

Signed-off-by: Roland Dreier <[email protected]>
Signed-off-by: Nicholas Bellinger <[email protected]>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <[email protected]>
Cc: Rui Xiang <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/target/iscsi/iscsi_target_login.c |    8 ++++----
 drivers/target/iscsi/iscsi_target_nego.c  |   10 ++++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -131,13 +131,13 @@ int iscsi_check_for_session_reinstatemen
 
        initiatorname_param = iscsi_find_param_from_key(
                        INITIATORNAME, conn->param_list);
-       if (!initiatorname_param)
-               return -1;
-
        sessiontype_param = iscsi_find_param_from_key(
                        SESSIONTYPE, conn->param_list);
-       if (!sessiontype_param)
+       if (!initiatorname_param || !sessiontype_param) {
+               iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
+                       ISCSI_LOGIN_STATUS_MISSING_FIELDS);
                return -1;
+       }
 
        sessiontype = (strncmp(sessiontype_param->value, NORMAL, 6)) ? 1 : 0;
 
--- a/drivers/target/iscsi/iscsi_target_nego.c
+++ b/drivers/target/iscsi/iscsi_target_nego.c
@@ -628,8 +628,11 @@ static int iscsi_target_handle_csg_one(s
                        login->req_buf,
                        payload_length,
                        conn->param_list);
-       if (ret < 0)
+       if (ret < 0) {
+               iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
+                               ISCSI_LOGIN_STATUS_INIT_ERR);
                return -1;
+       }
 
        if (login->first_request)
                if (iscsi_target_check_first_request(conn, login) < 0)
@@ -644,8 +647,11 @@ static int iscsi_target_handle_csg_one(s
                        login->rsp_buf,
                        &login->rsp_length,
                        conn->param_list);
-       if (ret < 0)
+       if (ret < 0) {
+               iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
+                               ISCSI_LOGIN_STATUS_INIT_ERR);
                return -1;
+       }
 
        if (!login->auth_complete &&
             ISCSI_TPG_ATTRIB(ISCSI_TPG_C(conn))->authentication) {


Patches currently in stable-queue which might be from [email protected] are

queue-3.4/iscsi-target-always-send-a-response-before-terminating-iscsi-connection.patch
queue-3.4/target-fix-maintenance_in-service-action-cdb-checks-to-use-lower-5-bits.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to