diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-09-12 12:44:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-09-12 12:44:03 -0400 |
commit | aeb5427218a72ead8be673c0fba21839d2a3bb70 (patch) | |
tree | b0349ff05e162e88f036e8c770065f17f3c186bf | |
parent | 5e335542de83558e46d28de1008a1c37d5d6679a (diff) | |
parent | c77a2fa3ff8f73d1a485e67e6f81c64823739d59 (diff) |
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley:
"Three fixes, all in drivers (qedi and iscsi target) so no wider impact
even if the code changes are a bit extensive"
* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: qedi: Add the CRC size within iSCSI NVM image
scsi: iscsi: target: Fix conn_ops double free
scsi: iscsi: target: Set conn->sess to NULL when iscsi_login_set_conn_values fails
-rw-r--r-- | drivers/scsi/qedi/qedi.h | 7 | ||||
-rw-r--r-- | drivers/scsi/qedi/qedi_main.c | 28 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 9 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_login.c | 149 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_login.h | 2 |
5 files changed, 101 insertions, 94 deletions
diff --git a/drivers/scsi/qedi/qedi.h b/drivers/scsi/qedi/qedi.h index fc3babc15fa3..a6f96b35e971 100644 --- a/drivers/scsi/qedi/qedi.h +++ b/drivers/scsi/qedi/qedi.h | |||
@@ -77,6 +77,11 @@ enum qedi_nvm_tgts { | |||
77 | QEDI_NVM_TGT_SEC, | 77 | QEDI_NVM_TGT_SEC, |
78 | }; | 78 | }; |
79 | 79 | ||
80 | struct qedi_nvm_iscsi_image { | ||
81 | struct nvm_iscsi_cfg iscsi_cfg; | ||
82 | u32 crc; | ||
83 | }; | ||
84 | |||
80 | struct qedi_uio_ctrl { | 85 | struct qedi_uio_ctrl { |
81 | /* meta data */ | 86 | /* meta data */ |
82 | u32 uio_hsi_version; | 87 | u32 uio_hsi_version; |
@@ -294,7 +299,7 @@ struct qedi_ctx { | |||
294 | void *bdq_pbl_list; | 299 | void *bdq_pbl_list; |
295 | dma_addr_t bdq_pbl_list_dma; | 300 | dma_addr_t bdq_pbl_list_dma; |
296 | u8 bdq_pbl_list_num_entries; | 301 | u8 bdq_pbl_list_num_entries; |
297 | struct nvm_iscsi_cfg *iscsi_cfg; | 302 | struct qedi_nvm_iscsi_image *iscsi_image; |
298 | dma_addr_t nvm_buf_dma; | 303 | dma_addr_t nvm_buf_dma; |
299 | void __iomem *bdq_primary_prod; | 304 | void __iomem *bdq_primary_prod; |
300 | void __iomem *bdq_secondary_prod; | 305 | void __iomem *bdq_secondary_prod; |
diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c index aa96bccb5a96..cc8e64dc65ad 100644 --- a/drivers/scsi/qedi/qedi_main.c +++ b/drivers/scsi/qedi/qedi_main.c | |||
@@ -1346,23 +1346,26 @@ exit_setup_int: | |||
1346 | 1346 | ||
1347 | static void qedi_free_nvm_iscsi_cfg(struct qedi_ctx *qedi) | 1347 | static void qedi_free_nvm_iscsi_cfg(struct qedi_ctx *qedi) |
1348 | { | 1348 | { |
1349 | if (qedi->iscsi_cfg) | 1349 | if (qedi->iscsi_image) |
1350 | dma_free_coherent(&qedi->pdev->dev, | 1350 | dma_free_coherent(&qedi->pdev->dev, |
1351 | sizeof(struct nvm_iscsi_cfg), | 1351 | sizeof(struct qedi_nvm_iscsi_image), |
1352 | qedi->iscsi_cfg, qedi->nvm_buf_dma); | 1352 | qedi->iscsi_image, qedi->nvm_buf_dma); |
1353 | } | 1353 | } |
1354 | 1354 | ||
1355 | static int qedi_alloc_nvm_iscsi_cfg(struct qedi_ctx *qedi) | 1355 | static int qedi_alloc_nvm_iscsi_cfg(struct qedi_ctx *qedi) |
1356 | { | 1356 | { |
1357 | qedi->iscsi_cfg = dma_zalloc_coherent(&qedi->pdev->dev, | 1357 | struct qedi_nvm_iscsi_image nvm_image; |
1358 | sizeof(struct nvm_iscsi_cfg), | 1358 | |
1359 | &qedi->nvm_buf_dma, GFP_KERNEL); | 1359 | qedi->iscsi_image = dma_zalloc_coherent(&qedi->pdev->dev, |
1360 | if (!qedi->iscsi_cfg) { | 1360 | sizeof(nvm_image), |
1361 | &qedi->nvm_buf_dma, | ||
1362 | GFP_KERNEL); | ||
1363 | if (!qedi->iscsi_image) { | ||
1361 | QEDI_ERR(&qedi->dbg_ctx, "Could not allocate NVM BUF.\n"); | 1364 | QEDI_ERR(&qedi->dbg_ctx, "Could not allocate NVM BUF.\n"); |
1362 | return -ENOMEM; | 1365 | return -ENOMEM; |
1363 | } | 1366 | } |
1364 | QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, | 1367 | QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, |
1365 | "NVM BUF addr=0x%p dma=0x%llx.\n", qedi->iscsi_cfg, | 1368 | "NVM BUF addr=0x%p dma=0x%llx.\n", qedi->iscsi_image, |
1366 | qedi->nvm_buf_dma); | 1369 | qedi->nvm_buf_dma); |
1367 | 1370 | ||
1368 | return 0; | 1371 | return 0; |
@@ -1905,7 +1908,7 @@ qedi_get_nvram_block(struct qedi_ctx *qedi) | |||
1905 | struct nvm_iscsi_block *block; | 1908 | struct nvm_iscsi_block *block; |
1906 | 1909 | ||
1907 | pf = qedi->dev_info.common.abs_pf_id; | 1910 | pf = qedi->dev_info.common.abs_pf_id; |
1908 | block = &qedi->iscsi_cfg->block[0]; | 1911 | block = &qedi->iscsi_image->iscsi_cfg.block[0]; |
1909 | for (i = 0; i < NUM_OF_ISCSI_PF_SUPPORTED; i++, block++) { | 1912 | for (i = 0; i < NUM_OF_ISCSI_PF_SUPPORTED; i++, block++) { |
1910 | flags = ((block->id) & NVM_ISCSI_CFG_BLK_CTRL_FLAG_MASK) >> | 1913 | flags = ((block->id) & NVM_ISCSI_CFG_BLK_CTRL_FLAG_MASK) >> |
1911 | NVM_ISCSI_CFG_BLK_CTRL_FLAG_OFFSET; | 1914 | NVM_ISCSI_CFG_BLK_CTRL_FLAG_OFFSET; |
@@ -2194,15 +2197,14 @@ static void qedi_boot_release(void *data) | |||
2194 | static int qedi_get_boot_info(struct qedi_ctx *qedi) | 2197 | static int qedi_get_boot_info(struct qedi_ctx *qedi) |
2195 | { | 2198 | { |
2196 | int ret = 1; | 2199 | int ret = 1; |
2197 | u16 len; | 2200 | struct qedi_nvm_iscsi_image nvm_image; |
2198 | |||
2199 | len = sizeof(struct nvm_iscsi_cfg); | ||
2200 | 2201 | ||
2201 | QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, | 2202 | QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, |
2202 | "Get NVM iSCSI CFG image\n"); | 2203 | "Get NVM iSCSI CFG image\n"); |
2203 | ret = qedi_ops->common->nvm_get_image(qedi->cdev, | 2204 | ret = qedi_ops->common->nvm_get_image(qedi->cdev, |
2204 | QED_NVM_IMAGE_ISCSI_CFG, | 2205 | QED_NVM_IMAGE_ISCSI_CFG, |
2205 | (char *)qedi->iscsi_cfg, len); | 2206 | (char *)qedi->iscsi_image, |
2207 | sizeof(nvm_image)); | ||
2206 | if (ret) | 2208 | if (ret) |
2207 | QEDI_ERR(&qedi->dbg_ctx, | 2209 | QEDI_ERR(&qedi->dbg_ctx, |
2208 | "Could not get NVM image. ret = %d\n", ret); | 2210 | "Could not get NVM image. ret = %d\n", ret); |
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 94bad43c41ff..9cdfccbdd06f 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
@@ -4208,22 +4208,15 @@ int iscsit_close_connection( | |||
4208 | crypto_free_ahash(tfm); | 4208 | crypto_free_ahash(tfm); |
4209 | } | 4209 | } |
4210 | 4210 | ||
4211 | free_cpumask_var(conn->conn_cpumask); | ||
4212 | |||
4213 | kfree(conn->conn_ops); | ||
4214 | conn->conn_ops = NULL; | ||
4215 | |||
4216 | if (conn->sock) | 4211 | if (conn->sock) |
4217 | sock_release(conn->sock); | 4212 | sock_release(conn->sock); |
4218 | 4213 | ||
4219 | if (conn->conn_transport->iscsit_free_conn) | 4214 | if (conn->conn_transport->iscsit_free_conn) |
4220 | conn->conn_transport->iscsit_free_conn(conn); | 4215 | conn->conn_transport->iscsit_free_conn(conn); |
4221 | 4216 | ||
4222 | iscsit_put_transport(conn->conn_transport); | ||
4223 | |||
4224 | pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); | 4217 | pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); |
4225 | conn->conn_state = TARG_CONN_STATE_FREE; | 4218 | conn->conn_state = TARG_CONN_STATE_FREE; |
4226 | kfree(conn); | 4219 | iscsit_free_conn(conn); |
4227 | 4220 | ||
4228 | spin_lock_bh(&sess->conn_lock); | 4221 | spin_lock_bh(&sess->conn_lock); |
4229 | atomic_dec(&sess->nconn); | 4222 | atomic_dec(&sess->nconn); |
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 9e74f8bc2963..bb90c80ff388 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c | |||
@@ -67,45 +67,10 @@ static struct iscsi_login *iscsi_login_init_conn(struct iscsi_conn *conn) | |||
67 | goto out_req_buf; | 67 | goto out_req_buf; |
68 | } | 68 | } |
69 | 69 | ||
70 | conn->conn_ops = kzalloc(sizeof(struct iscsi_conn_ops), GFP_KERNEL); | ||
71 | if (!conn->conn_ops) { | ||
72 | pr_err("Unable to allocate memory for" | ||
73 | " struct iscsi_conn_ops.\n"); | ||
74 | goto out_rsp_buf; | ||
75 | } | ||
76 | |||
77 | init_waitqueue_head(&conn->queues_wq); | ||
78 | INIT_LIST_HEAD(&conn->conn_list); | ||
79 | INIT_LIST_HEAD(&conn->conn_cmd_list); | ||
80 | INIT_LIST_HEAD(&conn->immed_queue_list); | ||
81 | INIT_LIST_HEAD(&conn->response_queue_list); | ||
82 | init_completion(&conn->conn_post_wait_comp); | ||
83 | init_completion(&conn->conn_wait_comp); | ||
84 | init_completion(&conn->conn_wait_rcfr_comp); | ||
85 | init_completion(&conn->conn_waiting_on_uc_comp); | ||
86 | init_completion(&conn->conn_logout_comp); | ||
87 | init_completion(&conn->rx_half_close_comp); | ||
88 | init_completion(&conn->tx_half_close_comp); | ||
89 | init_completion(&conn->rx_login_comp); | ||
90 | spin_lock_init(&conn->cmd_lock); | ||
91 | spin_lock_init(&conn->conn_usage_lock); | ||
92 | spin_lock_init(&conn->immed_queue_lock); | ||
93 | spin_lock_init(&conn->nopin_timer_lock); | ||
94 | spin_lock_init(&conn->response_queue_lock); | ||
95 | spin_lock_init(&conn->state_lock); | ||
96 | |||
97 | if (!zalloc_cpumask_var(&conn->conn_cpumask, GFP_KERNEL)) { | ||
98 | pr_err("Unable to allocate conn->conn_cpumask\n"); | ||
99 | goto out_conn_ops; | ||
100 | } | ||
101 | conn->conn_login = login; | 70 | conn->conn_login = login; |
102 | 71 | ||
103 | return login; | 72 | return login; |
104 | 73 | ||
105 | out_conn_ops: | ||
106 | kfree(conn->conn_ops); | ||
107 | out_rsp_buf: | ||
108 | kfree(login->rsp_buf); | ||
109 | out_req_buf: | 74 | out_req_buf: |
110 | kfree(login->req_buf); | 75 | kfree(login->req_buf); |
111 | out_login: | 76 | out_login: |
@@ -310,11 +275,9 @@ static int iscsi_login_zero_tsih_s1( | |||
310 | return -ENOMEM; | 275 | return -ENOMEM; |
311 | } | 276 | } |
312 | 277 | ||
313 | ret = iscsi_login_set_conn_values(sess, conn, pdu->cid); | 278 | if (iscsi_login_set_conn_values(sess, conn, pdu->cid)) |
314 | if (unlikely(ret)) { | 279 | goto free_sess; |
315 | kfree(sess); | 280 | |
316 | return ret; | ||
317 | } | ||
318 | sess->init_task_tag = pdu->itt; | 281 | sess->init_task_tag = pdu->itt; |
319 | memcpy(&sess->isid, pdu->isid, 6); | 282 | memcpy(&sess->isid, pdu->isid, 6); |
320 | sess->exp_cmd_sn = be32_to_cpu(pdu->cmdsn); | 283 | sess->exp_cmd_sn = be32_to_cpu(pdu->cmdsn); |
@@ -1149,6 +1112,75 @@ iscsit_conn_set_transport(struct iscsi_conn *conn, struct iscsit_transport *t) | |||
1149 | return 0; | 1112 | return 0; |
1150 | } | 1113 | } |
1151 | 1114 | ||
1115 | static struct iscsi_conn *iscsit_alloc_conn(struct iscsi_np *np) | ||
1116 | { | ||
1117 | struct iscsi_conn *conn; | ||
1118 | |||
1119 | conn = kzalloc(sizeof(struct iscsi_conn), GFP_KERNEL); | ||
1120 | if (!conn) { | ||
1121 | pr_err("Could not allocate memory for new connection\n"); | ||
1122 | return NULL; | ||
1123 | } | ||
1124 | pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); | ||
1125 | conn->conn_state = TARG_CONN_STATE_FREE; | ||
1126 | |||
1127 | init_waitqueue_head(&conn->queues_wq); | ||
1128 | INIT_LIST_HEAD(&conn->conn_list); | ||
1129 | INIT_LIST_HEAD(&conn->conn_cmd_list); | ||
1130 | INIT_LIST_HEAD(&conn->immed_queue_list); | ||
1131 | INIT_LIST_HEAD(&conn->response_queue_list); | ||
1132 | init_completion(&conn->conn_post_wait_comp); | ||
1133 | init_completion(&conn->conn_wait_comp); | ||
1134 | init_completion(&conn->conn_wait_rcfr_comp); | ||
1135 | init_completion(&conn->conn_waiting_on_uc_comp); | ||
1136 | init_completion(&conn->conn_logout_comp); | ||
1137 | init_completion(&conn->rx_half_close_comp); | ||
1138 | init_completion(&conn->tx_half_close_comp); | ||
1139 | init_completion(&conn->rx_login_comp); | ||
1140 | spin_lock_init(&conn->cmd_lock); | ||
1141 | spin_lock_init(&conn->conn_usage_lock); | ||
1142 | spin_lock_init(&conn->immed_queue_lock); | ||
1143 | spin_lock_init(&conn->nopin_timer_lock); | ||
1144 | spin_lock_init(&conn->response_queue_lock); | ||
1145 | spin_lock_init(&conn->state_lock); | ||
1146 | |||
1147 | timer_setup(&conn->nopin_response_timer, | ||
1148 | iscsit_handle_nopin_response_timeout, 0); | ||
1149 | timer_setup(&conn->nopin_timer, iscsit_handle_nopin_timeout, 0); | ||
1150 | |||
1151 | if (iscsit_conn_set_transport(conn, np->np_transport) < 0) | ||
1152 | goto free_conn; | ||
1153 | |||
1154 | conn->conn_ops = kzalloc(sizeof(struct iscsi_conn_ops), GFP_KERNEL); | ||
1155 | if (!conn->conn_ops) { | ||
1156 | pr_err("Unable to allocate memory for struct iscsi_conn_ops.\n"); | ||
1157 | goto put_transport; | ||
1158 | } | ||
1159 | |||
1160 | if (!zalloc_cpumask_var(&conn->conn_cpumask, GFP_KERNEL)) { | ||
1161 | pr_err("Unable to allocate conn->conn_cpumask\n"); | ||
1162 | goto free_mask; | ||
1163 | } | ||
1164 | |||
1165 | return conn; | ||
1166 | |||
1167 | free_mask: | ||
1168 | free_cpumask_var(conn->conn_cpumask); | ||
1169 | put_transport: | ||
1170 | iscsit_put_transport(conn->conn_transport); | ||
1171 | free_conn: | ||
1172 | kfree(conn); | ||
1173 | return NULL; | ||
1174 | } | ||
1175 | |||
1176 | void iscsit_free_conn(struct iscsi_conn *conn) | ||
1177 | { | ||
1178 | free_cpumask_var(conn->conn_cpumask); | ||
1179 | kfree(conn->conn_ops); | ||
1180 | iscsit_put_transport(conn->conn_transport); | ||
1181 | kfree(conn); | ||
1182 | } | ||
1183 | |||
1152 | void iscsi_target_login_sess_out(struct iscsi_conn *conn, | 1184 | void iscsi_target_login_sess_out(struct iscsi_conn *conn, |
1153 | struct iscsi_np *np, bool zero_tsih, bool new_sess) | 1185 | struct iscsi_np *np, bool zero_tsih, bool new_sess) |
1154 | { | 1186 | { |
@@ -1198,10 +1230,6 @@ old_sess_out: | |||
1198 | crypto_free_ahash(tfm); | 1230 | crypto_free_ahash(tfm); |
1199 | } | 1231 | } |
1200 | 1232 | ||
1201 | free_cpumask_var(conn->conn_cpumask); | ||
1202 | |||
1203 | kfree(conn->conn_ops); | ||
1204 | |||
1205 | if (conn->param_list) { | 1233 | if (conn->param_list) { |
1206 | iscsi_release_param_list(conn->param_list); | 1234 | iscsi_release_param_list(conn->param_list); |
1207 | conn->param_list = NULL; | 1235 | conn->param_list = NULL; |
@@ -1219,8 +1247,7 @@ old_sess_out: | |||
1219 | if (conn->conn_transport->iscsit_free_conn) | 1247 | if (conn->conn_transport->iscsit_free_conn) |
1220 | conn->conn_transport->iscsit_free_conn(conn); | 1248 | conn->conn_transport->iscsit_free_conn(conn); |
1221 | 1249 | ||
1222 | iscsit_put_transport(conn->conn_transport); | 1250 | iscsit_free_conn(conn); |
1223 | kfree(conn); | ||
1224 | } | 1251 | } |
1225 | 1252 | ||
1226 | static int __iscsi_target_login_thread(struct iscsi_np *np) | 1253 | static int __iscsi_target_login_thread(struct iscsi_np *np) |
@@ -1250,31 +1277,16 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) | |||
1250 | } | 1277 | } |
1251 | spin_unlock_bh(&np->np_thread_lock); | 1278 | spin_unlock_bh(&np->np_thread_lock); |
1252 | 1279 | ||
1253 | conn = kzalloc(sizeof(struct iscsi_conn), GFP_KERNEL); | 1280 | conn = iscsit_alloc_conn(np); |
1254 | if (!conn) { | 1281 | if (!conn) { |
1255 | pr_err("Could not allocate memory for" | ||
1256 | " new connection\n"); | ||
1257 | /* Get another socket */ | 1282 | /* Get another socket */ |
1258 | return 1; | 1283 | return 1; |
1259 | } | 1284 | } |
1260 | pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); | ||
1261 | conn->conn_state = TARG_CONN_STATE_FREE; | ||
1262 | |||
1263 | timer_setup(&conn->nopin_response_timer, | ||
1264 | iscsit_handle_nopin_response_timeout, 0); | ||
1265 | timer_setup(&conn->nopin_timer, iscsit_handle_nopin_timeout, 0); | ||
1266 | |||
1267 | if (iscsit_conn_set_transport(conn, np->np_transport) < 0) { | ||
1268 | kfree(conn); | ||
1269 | return 1; | ||
1270 | } | ||
1271 | 1285 | ||
1272 | rc = np->np_transport->iscsit_accept_np(np, conn); | 1286 | rc = np->np_transport->iscsit_accept_np(np, conn); |
1273 | if (rc == -ENOSYS) { | 1287 | if (rc == -ENOSYS) { |
1274 | complete(&np->np_restart_comp); | 1288 | complete(&np->np_restart_comp); |
1275 | iscsit_put_transport(conn->conn_transport); | 1289 | iscsit_free_conn(conn); |
1276 | kfree(conn); | ||
1277 | conn = NULL; | ||
1278 | goto exit; | 1290 | goto exit; |
1279 | } else if (rc < 0) { | 1291 | } else if (rc < 0) { |
1280 | spin_lock_bh(&np->np_thread_lock); | 1292 | spin_lock_bh(&np->np_thread_lock); |
@@ -1282,17 +1294,13 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) | |||
1282 | np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; | 1294 | np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; |
1283 | spin_unlock_bh(&np->np_thread_lock); | 1295 | spin_unlock_bh(&np->np_thread_lock); |
1284 | complete(&np->np_restart_comp); | 1296 | complete(&np->np_restart_comp); |
1285 | iscsit_put_transport(conn->conn_transport); | 1297 | iscsit_free_conn(conn); |
1286 | kfree(conn); | ||
1287 | conn = NULL; | ||
1288 | /* Get another socket */ | 1298 | /* Get another socket */ |
1289 | return 1; | 1299 | return 1; |
1290 | } | 1300 | } |
1291 | spin_unlock_bh(&np->np_thread_lock); | 1301 | spin_unlock_bh(&np->np_thread_lock); |
1292 | iscsit_put_transport(conn->conn_transport); | 1302 | iscsit_free_conn(conn); |
1293 | kfree(conn); | 1303 | return 1; |
1294 | conn = NULL; | ||
1295 | goto out; | ||
1296 | } | 1304 | } |
1297 | /* | 1305 | /* |
1298 | * Perform the remaining iSCSI connection initialization items.. | 1306 | * Perform the remaining iSCSI connection initialization items.. |
@@ -1442,7 +1450,6 @@ old_sess_out: | |||
1442 | tpg_np = NULL; | 1450 | tpg_np = NULL; |
1443 | } | 1451 | } |
1444 | 1452 | ||
1445 | out: | ||
1446 | return 1; | 1453 | return 1; |
1447 | 1454 | ||
1448 | exit: | 1455 | exit: |
diff --git a/drivers/target/iscsi/iscsi_target_login.h b/drivers/target/iscsi/iscsi_target_login.h index 74ac3abc44a0..3b8e3639ff5d 100644 --- a/drivers/target/iscsi/iscsi_target_login.h +++ b/drivers/target/iscsi/iscsi_target_login.h | |||
@@ -19,7 +19,7 @@ extern int iscsi_target_setup_login_socket(struct iscsi_np *, | |||
19 | extern int iscsit_accept_np(struct iscsi_np *, struct iscsi_conn *); | 19 | extern int iscsit_accept_np(struct iscsi_np *, struct iscsi_conn *); |
20 | extern int iscsit_get_login_rx(struct iscsi_conn *, struct iscsi_login *); | 20 | extern int iscsit_get_login_rx(struct iscsi_conn *, struct iscsi_login *); |
21 | extern int iscsit_put_login_tx(struct iscsi_conn *, struct iscsi_login *, u32); | 21 | extern int iscsit_put_login_tx(struct iscsi_conn *, struct iscsi_login *, u32); |
22 | extern void iscsit_free_conn(struct iscsi_np *, struct iscsi_conn *); | 22 | extern void iscsit_free_conn(struct iscsi_conn *); |
23 | extern int iscsit_start_kthreads(struct iscsi_conn *); | 23 | extern int iscsit_start_kthreads(struct iscsi_conn *); |
24 | extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8); | 24 | extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8); |
25 | extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *, | 25 | extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *, |