From: Greg Kroah-Hartman Date: Thu, 12 Jun 2014 22:28:30 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.4.94~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e99ed2af4547ba484e6e3db71ee76fdde2046298;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch --- diff --git a/queue-3.14/series b/queue-3.14/series index 86222ed0c98..581986c4bdd 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -1,3 +1,4 @@ fs-userns-change-inode_capable-to-capable_wrt_inode_uidgid.patch netfilter-ipv4-defrag-set-local_df-flag-on-defragmented-skb.patch mips-asm-thread_info-add-_tif_seccomp-flag.patch +target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch diff --git a/queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch b/queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch new file mode 100644 index 00000000000..b46c6a3c1cd --- /dev/null +++ b/queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch @@ -0,0 +1,77 @@ +From 14f4b54fe38f3a8f8392a50b951c8aa43b63687a Mon Sep 17 00:00:00 2001 +From: Sagi Grimberg +Date: Tue, 29 Apr 2014 13:13:47 +0300 +Subject: Target/iscsi,iser: Avoid accepting transport connections during stop stage + +From: Sagi Grimberg + +commit 14f4b54fe38f3a8f8392a50b951c8aa43b63687a upstream. + +When the target is in stop stage, iSER transport initiates RDMA disconnects. +The iSER initiator may wish to establish a new connection over the +still existing network portal. In this case iSER transport should not +accept and resume new RDMA connections. In order to learn that, iscsi_np +is added with enabled flag so the iSER transport can check when deciding +weather to accept and resume a new connection request. + +The iscsi_np is enabled after successful transport setup, and disabled +before iscsi_np login threads are cleaned up. + +Signed-off-by: Sagi Grimberg +Signed-off-by: Nicholas Bellinger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/ulp/isert/ib_isert.c | 8 ++++++++ + drivers/target/iscsi/iscsi_target_core.h | 1 + + drivers/target/iscsi/iscsi_target_login.c | 1 + + drivers/target/iscsi/iscsi_target_tpg.c | 1 + + 4 files changed, 11 insertions(+) + +--- a/drivers/infiniband/ulp/isert/ib_isert.c ++++ b/drivers/infiniband/ulp/isert/ib_isert.c +@@ -489,6 +489,14 @@ isert_connect_request(struct rdma_cm_id + struct ib_device *ib_dev = cma_id->device; + int ret = 0; + ++ spin_lock_bh(&np->np_thread_lock); ++ if (!np->enabled) { ++ spin_unlock_bh(&np->np_thread_lock); ++ pr_debug("iscsi_np is not enabled, reject connect request\n"); ++ return rdma_reject(cma_id, NULL, 0); ++ } ++ spin_unlock_bh(&np->np_thread_lock); ++ + pr_debug("Entering isert_connect_request cma_id: %p, context: %p\n", + cma_id, cma_id->context); + +--- a/drivers/target/iscsi/iscsi_target_core.h ++++ b/drivers/target/iscsi/iscsi_target_core.h +@@ -773,6 +773,7 @@ struct iscsi_np { + int np_ip_proto; + int np_sock_type; + enum np_thread_state_table np_thread_state; ++ bool enabled; + enum iscsi_timer_flags_table np_login_timer_flags; + u32 np_exports; + enum np_flags_table np_flags; +--- a/drivers/target/iscsi/iscsi_target_login.c ++++ b/drivers/target/iscsi/iscsi_target_login.c +@@ -981,6 +981,7 @@ int iscsi_target_setup_login_socket( + } + + np->np_transport = t; ++ np->enabled = true; + return 0; + } + +--- a/drivers/target/iscsi/iscsi_target_tpg.c ++++ b/drivers/target/iscsi/iscsi_target_tpg.c +@@ -184,6 +184,7 @@ static void iscsit_clear_tpg_np_login_th + return; + } + ++ tpg_np->tpg_np->enabled = false; + iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); + } +