]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.10.34/iscsi-iser-target-use-list_del_init-for-i_conn_node.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.10.34 / iscsi-iser-target-use-list_del_init-for-i_conn_node.patch
CommitLineData
9b50f08f
GKH
1From 5159d763f60af693a3fcec45dce2021f66e528a4 Mon Sep 17 00:00:00 2001
2From: Nicholas Bellinger <nab@linux-iscsi.org>
3Date: Mon, 3 Feb 2014 12:53:51 -0800
4Subject: iscsi/iser-target: Use list_del_init for ->i_conn_node
5
6From: Nicholas Bellinger <nab@linux-iscsi.org>
7
8commit 5159d763f60af693a3fcec45dce2021f66e528a4 upstream.
9
10There are a handful of uses of list_empty() for cmd->i_conn_node
11within iser-target code that expect to return false once a cmd
12has been removed from the per connect list.
13
14This patch changes all uses of list_del -> list_del_init in order
15to ensure that list_empty() returns false as expected.
16
17Acked-by: Sagi Grimberg <sagig@mellanox.com>
18Cc: Or Gerlitz <ogerlitz@mellanox.com>
19Cc: <stable@vger.kernel.org> #3.10+
20Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22
23
24---
25 drivers/infiniband/ulp/isert/ib_isert.c | 6 +++---
26 drivers/target/iscsi/iscsi_target.c | 4 ++--
27 drivers/target/iscsi/iscsi_target_erl2.c | 16 ++++++++--------
28 3 files changed, 13 insertions(+), 13 deletions(-)
29
30--- a/drivers/infiniband/ulp/isert/ib_isert.c
31+++ b/drivers/infiniband/ulp/isert/ib_isert.c
32@@ -1213,7 +1213,7 @@ isert_put_cmd(struct isert_cmd *isert_cm
33 case ISCSI_OP_SCSI_CMD:
34 spin_lock_bh(&conn->cmd_lock);
35 if (!list_empty(&cmd->i_conn_node))
36- list_del(&cmd->i_conn_node);
37+ list_del_init(&cmd->i_conn_node);
38 spin_unlock_bh(&conn->cmd_lock);
39
40 if (cmd->data_direction == DMA_TO_DEVICE)
41@@ -1225,7 +1225,7 @@ isert_put_cmd(struct isert_cmd *isert_cm
42 case ISCSI_OP_SCSI_TMFUNC:
43 spin_lock_bh(&conn->cmd_lock);
44 if (!list_empty(&cmd->i_conn_node))
45- list_del(&cmd->i_conn_node);
46+ list_del_init(&cmd->i_conn_node);
47 spin_unlock_bh(&conn->cmd_lock);
48
49 transport_generic_free_cmd(&cmd->se_cmd, 0);
50@@ -1234,7 +1234,7 @@ isert_put_cmd(struct isert_cmd *isert_cm
51 case ISCSI_OP_NOOP_OUT:
52 spin_lock_bh(&conn->cmd_lock);
53 if (!list_empty(&cmd->i_conn_node))
54- list_del(&cmd->i_conn_node);
55+ list_del_init(&cmd->i_conn_node);
56 spin_unlock_bh(&conn->cmd_lock);
57
58 /*
59--- a/drivers/target/iscsi/iscsi_target.c
60+++ b/drivers/target/iscsi/iscsi_target.c
61@@ -3653,7 +3653,7 @@ iscsit_immediate_queue(struct iscsi_conn
62 break;
63 case ISTATE_REMOVE:
64 spin_lock_bh(&conn->cmd_lock);
65- list_del(&cmd->i_conn_node);
66+ list_del_init(&cmd->i_conn_node);
67 spin_unlock_bh(&conn->cmd_lock);
68
69 iscsit_free_cmd(cmd, false);
70@@ -4099,7 +4099,7 @@ static void iscsit_release_commands_from
71 spin_lock_bh(&conn->cmd_lock);
72 list_for_each_entry_safe(cmd, cmd_tmp, &conn->conn_cmd_list, i_conn_node) {
73
74- list_del(&cmd->i_conn_node);
75+ list_del_init(&cmd->i_conn_node);
76 spin_unlock_bh(&conn->cmd_lock);
77
78 iscsit_increment_maxcmdsn(cmd, sess);
79--- a/drivers/target/iscsi/iscsi_target_erl2.c
80+++ b/drivers/target/iscsi/iscsi_target_erl2.c
81@@ -140,7 +140,7 @@ void iscsit_free_connection_recovery_ent
82 list_for_each_entry_safe(cmd, cmd_tmp,
83 &cr->conn_recovery_cmd_list, i_conn_node) {
84
85- list_del(&cmd->i_conn_node);
86+ list_del_init(&cmd->i_conn_node);
87 cmd->conn = NULL;
88 spin_unlock(&cr->conn_recovery_cmd_lock);
89 iscsit_free_cmd(cmd, true);
90@@ -162,7 +162,7 @@ void iscsit_free_connection_recovery_ent
91 list_for_each_entry_safe(cmd, cmd_tmp,
92 &cr->conn_recovery_cmd_list, i_conn_node) {
93
94- list_del(&cmd->i_conn_node);
95+ list_del_init(&cmd->i_conn_node);
96 cmd->conn = NULL;
97 spin_unlock(&cr->conn_recovery_cmd_lock);
98 iscsit_free_cmd(cmd, true);
99@@ -218,7 +218,7 @@ int iscsit_remove_cmd_from_connection_re
100 }
101 cr = cmd->cr;
102
103- list_del(&cmd->i_conn_node);
104+ list_del_init(&cmd->i_conn_node);
105 return --cr->cmd_count;
106 }
107
108@@ -299,7 +299,7 @@ int iscsit_discard_unacknowledged_ooo_cm
109 if (!(cmd->cmd_flags & ICF_OOO_CMDSN))
110 continue;
111
112- list_del(&cmd->i_conn_node);
113+ list_del_init(&cmd->i_conn_node);
114
115 spin_unlock_bh(&conn->cmd_lock);
116 iscsit_free_cmd(cmd, true);
117@@ -337,7 +337,7 @@ int iscsit_prepare_cmds_for_realligance(
118 /*
119 * Only perform connection recovery on ISCSI_OP_SCSI_CMD or
120 * ISCSI_OP_NOOP_OUT opcodes. For all other opcodes call
121- * list_del(&cmd->i_conn_node); to release the command to the
122+ * list_del_init(&cmd->i_conn_node); to release the command to the
123 * session pool and remove it from the connection's list.
124 *
125 * Also stop the DataOUT timer, which will be restarted after
126@@ -353,7 +353,7 @@ int iscsit_prepare_cmds_for_realligance(
127 " CID: %hu\n", cmd->iscsi_opcode,
128 cmd->init_task_tag, cmd->cmd_sn, conn->cid);
129
130- list_del(&cmd->i_conn_node);
131+ list_del_init(&cmd->i_conn_node);
132 spin_unlock_bh(&conn->cmd_lock);
133 iscsit_free_cmd(cmd, true);
134 spin_lock_bh(&conn->cmd_lock);
135@@ -373,7 +373,7 @@ int iscsit_prepare_cmds_for_realligance(
136 */
137 if (!(cmd->cmd_flags & ICF_OOO_CMDSN) && !cmd->immediate_cmd &&
138 iscsi_sna_gte(cmd->cmd_sn, conn->sess->exp_cmd_sn)) {
139- list_del(&cmd->i_conn_node);
140+ list_del_init(&cmd->i_conn_node);
141 spin_unlock_bh(&conn->cmd_lock);
142 iscsit_free_cmd(cmd, true);
143 spin_lock_bh(&conn->cmd_lock);
144@@ -395,7 +395,7 @@ int iscsit_prepare_cmds_for_realligance(
145
146 cmd->sess = conn->sess;
147
148- list_del(&cmd->i_conn_node);
149+ list_del_init(&cmd->i_conn_node);
150 spin_unlock_bh(&conn->cmd_lock);
151
152 iscsit_free_all_datain_reqs(cmd);