hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/scsi/iscsi_tcp.c
....@@ -721,13 +721,12 @@
721721 iscsi_set_param(cls_conn, param, buf, buflen);
722722 break;
723723 case ISCSI_PARAM_DATADGST_EN:
724
- iscsi_set_param(cls_conn, param, buf, buflen);
725
-
726724 mutex_lock(&tcp_sw_conn->sock_lock);
727725 if (!tcp_sw_conn->sock) {
728726 mutex_unlock(&tcp_sw_conn->sock_lock);
729727 return -ENOTCONN;
730728 }
729
+ iscsi_set_param(cls_conn, param, buf, buflen);
731730 tcp_sw_conn->sendpage = conn->datadgst_en ?
732731 sock_no_sendpage : tcp_sw_conn->sock->ops->sendpage;
733732 mutex_unlock(&tcp_sw_conn->sock_lock);
....@@ -802,7 +801,7 @@
802801 enum iscsi_host_param param, char *buf)
803802 {
804803 struct iscsi_sw_tcp_host *tcp_sw_host = iscsi_host_priv(shost);
805
- struct iscsi_session *session = tcp_sw_host->session;
804
+ struct iscsi_session *session;
806805 struct iscsi_conn *conn;
807806 struct iscsi_tcp_conn *tcp_conn;
808807 struct iscsi_sw_tcp_conn *tcp_sw_conn;
....@@ -812,6 +811,7 @@
812811
813812 switch (param) {
814813 case ISCSI_HOST_PARAM_IPADDRESS:
814
+ session = tcp_sw_host->session;
815815 if (!session)
816816 return -ENOTCONN;
817817
....@@ -906,12 +906,14 @@
906906 if (!cls_session)
907907 goto remove_host;
908908 session = cls_session->dd_data;
909
- tcp_sw_host = iscsi_host_priv(shost);
910
- tcp_sw_host->session = session;
911909
912910 shost->can_queue = session->scsi_cmds_max;
913911 if (iscsi_tcp_r2tpool_alloc(session))
914912 goto remove_session;
913
+
914
+ /* We are now fully setup so expose the session to sysfs. */
915
+ tcp_sw_host = iscsi_host_priv(shost);
916
+ tcp_sw_host->session = session;
915917 return cls_session;
916918
917919 remove_session: