diff options
Diffstat (limited to 'drivers/target/iscsi/iscsi_target_login.c')
-rw-r--r-- | drivers/target/iscsi/iscsi_target_login.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index d74e278ec8f..373b0cc6abd 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c | |||
@@ -143,7 +143,7 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn) | |||
143 | list_for_each_entry_safe(se_sess, se_sess_tmp, &se_tpg->tpg_sess_list, | 143 | list_for_each_entry_safe(se_sess, se_sess_tmp, &se_tpg->tpg_sess_list, |
144 | sess_list) { | 144 | sess_list) { |
145 | 145 | ||
146 | sess_p = (struct iscsi_session *)se_sess->fabric_sess_ptr; | 146 | sess_p = se_sess->fabric_sess_ptr; |
147 | spin_lock(&sess_p->conn_lock); | 147 | spin_lock(&sess_p->conn_lock); |
148 | if (atomic_read(&sess_p->session_fall_back_to_erl0) || | 148 | if (atomic_read(&sess_p->session_fall_back_to_erl0) || |
149 | atomic_read(&sess_p->session_logout) || | 149 | atomic_read(&sess_p->session_logout) || |
@@ -151,9 +151,9 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn) | |||
151 | spin_unlock(&sess_p->conn_lock); | 151 | spin_unlock(&sess_p->conn_lock); |
152 | continue; | 152 | continue; |
153 | } | 153 | } |
154 | if (!memcmp((void *)sess_p->isid, (void *)conn->sess->isid, 6) && | 154 | if (!memcmp(sess_p->isid, conn->sess->isid, 6) && |
155 | (!strcmp((void *)sess_p->sess_ops->InitiatorName, | 155 | (!strcmp(sess_p->sess_ops->InitiatorName, |
156 | (void *)initiatorname_param->value) && | 156 | initiatorname_param->value) && |
157 | (sess_p->sess_ops->SessionType == sessiontype))) { | 157 | (sess_p->sess_ops->SessionType == sessiontype))) { |
158 | atomic_set(&sess_p->session_reinstatement, 1); | 158 | atomic_set(&sess_p->session_reinstatement, 1); |
159 | spin_unlock(&sess_p->conn_lock); | 159 | spin_unlock(&sess_p->conn_lock); |
@@ -229,7 +229,7 @@ static int iscsi_login_zero_tsih_s1( | |||
229 | 229 | ||
230 | iscsi_login_set_conn_values(sess, conn, pdu->cid); | 230 | iscsi_login_set_conn_values(sess, conn, pdu->cid); |
231 | sess->init_task_tag = pdu->itt; | 231 | sess->init_task_tag = pdu->itt; |
232 | memcpy((void *)&sess->isid, (void *)pdu->isid, 6); | 232 | memcpy(&sess->isid, pdu->isid, 6); |
233 | sess->exp_cmd_sn = pdu->cmdsn; | 233 | sess->exp_cmd_sn = pdu->cmdsn; |
234 | INIT_LIST_HEAD(&sess->sess_conn_list); | 234 | INIT_LIST_HEAD(&sess->sess_conn_list); |
235 | INIT_LIST_HEAD(&sess->sess_ooo_cmdsn_list); | 235 | INIT_LIST_HEAD(&sess->sess_ooo_cmdsn_list); |
@@ -440,8 +440,7 @@ static int iscsi_login_non_zero_tsih_s2( | |||
440 | atomic_read(&sess_p->session_logout) || | 440 | atomic_read(&sess_p->session_logout) || |
441 | (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED)) | 441 | (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED)) |
442 | continue; | 442 | continue; |
443 | if (!memcmp((const void *)sess_p->isid, | 443 | if (!memcmp(sess_p->isid, pdu->isid, 6) && |
444 | (const void *)pdu->isid, 6) && | ||
445 | (sess_p->tsih == pdu->tsih)) { | 444 | (sess_p->tsih == pdu->tsih)) { |
446 | iscsit_inc_session_usage_count(sess_p); | 445 | iscsit_inc_session_usage_count(sess_p); |
447 | iscsit_stop_time2retain_timer(sess_p); | 446 | iscsit_stop_time2retain_timer(sess_p); |
@@ -654,7 +653,7 @@ static int iscsi_post_login_handler( | |||
654 | 653 | ||
655 | spin_lock_bh(&se_tpg->session_lock); | 654 | spin_lock_bh(&se_tpg->session_lock); |
656 | __transport_register_session(&sess->tpg->tpg_se_tpg, | 655 | __transport_register_session(&sess->tpg->tpg_se_tpg, |
657 | se_sess->se_node_acl, se_sess, (void *)sess); | 656 | se_sess->se_node_acl, se_sess, sess); |
658 | pr_debug("Moving to TARG_SESS_STATE_LOGGED_IN.\n"); | 657 | pr_debug("Moving to TARG_SESS_STATE_LOGGED_IN.\n"); |
659 | sess->session_state = TARG_SESS_STATE_LOGGED_IN; | 658 | sess->session_state = TARG_SESS_STATE_LOGGED_IN; |
660 | 659 | ||
@@ -811,7 +810,7 @@ int iscsi_target_setup_login_socket( | |||
811 | * Setup the np->np_sockaddr from the passed sockaddr setup | 810 | * Setup the np->np_sockaddr from the passed sockaddr setup |
812 | * in iscsi_target_configfs.c code.. | 811 | * in iscsi_target_configfs.c code.. |
813 | */ | 812 | */ |
814 | memcpy((void *)&np->np_sockaddr, (void *)sockaddr, | 813 | memcpy(&np->np_sockaddr, sockaddr, |
815 | sizeof(struct __kernel_sockaddr_storage)); | 814 | sizeof(struct __kernel_sockaddr_storage)); |
816 | 815 | ||
817 | if (sockaddr->ss_family == AF_INET6) | 816 | if (sockaddr->ss_family == AF_INET6) |
@@ -821,6 +820,7 @@ int iscsi_target_setup_login_socket( | |||
821 | /* | 820 | /* |
822 | * Set SO_REUSEADDR, and disable Nagel Algorithm with TCP_NODELAY. | 821 | * Set SO_REUSEADDR, and disable Nagel Algorithm with TCP_NODELAY. |
823 | */ | 822 | */ |
823 | /* FIXME: Someone please explain why this is endian-safe */ | ||
824 | opt = 1; | 824 | opt = 1; |
825 | if (np->np_network_transport == ISCSI_TCP) { | 825 | if (np->np_network_transport == ISCSI_TCP) { |
826 | ret = kernel_setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, | 826 | ret = kernel_setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, |
@@ -832,6 +832,7 @@ int iscsi_target_setup_login_socket( | |||
832 | } | 832 | } |
833 | } | 833 | } |
834 | 834 | ||
835 | /* FIXME: Someone please explain why this is endian-safe */ | ||
835 | ret = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, | 836 | ret = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, |
836 | (char *)&opt, sizeof(opt)); | 837 | (char *)&opt, sizeof(opt)); |
837 | if (ret < 0) { | 838 | if (ret < 0) { |
@@ -1206,7 +1207,7 @@ out: | |||
1206 | 1207 | ||
1207 | int iscsi_target_login_thread(void *arg) | 1208 | int iscsi_target_login_thread(void *arg) |
1208 | { | 1209 | { |
1209 | struct iscsi_np *np = (struct iscsi_np *)arg; | 1210 | struct iscsi_np *np = arg; |
1210 | int ret; | 1211 | int ret; |
1211 | 1212 | ||
1212 | allow_signal(SIGINT); | 1213 | allow_signal(SIGINT); |