hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/scsi/qla2xxx/qla_target.c
....@@ -1044,10 +1044,6 @@
10441044 (struct imm_ntfy_from_isp *)sess->iocb, SRB_NACK_LOGO);
10451045 }
10461046
1047
- spin_lock_irqsave(&vha->work_lock, flags);
1048
- sess->flags &= ~FCF_ASYNC_SENT;
1049
- spin_unlock_irqrestore(&vha->work_lock, flags);
1050
-
10511047 spin_lock_irqsave(&ha->tgt.sess_lock, flags);
10521048 if (sess->se_sess) {
10531049 sess->se_sess = NULL;
....@@ -1057,7 +1053,6 @@
10571053
10581054 qla2x00_set_fcport_disc_state(sess, DSC_DELETED);
10591055 sess->fw_login_state = DSC_LS_PORT_UNAVAIL;
1060
- sess->deleted = QLA_SESS_DELETED;
10611056
10621057 if (sess->login_succ && !IS_SW_RESV_ADDR(sess->d_id)) {
10631058 vha->fcport_count--;
....@@ -1109,9 +1104,14 @@
11091104
11101105 sess->explicit_logout = 0;
11111106 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags);
1112
- sess->free_pending = 0;
11131107
11141108 qla2x00_dfs_remove_rport(vha, sess);
1109
+
1110
+ spin_lock_irqsave(&vha->work_lock, flags);
1111
+ sess->flags &= ~FCF_ASYNC_SENT;
1112
+ sess->deleted = QLA_SESS_DELETED;
1113
+ sess->free_pending = 0;
1114
+ spin_unlock_irqrestore(&vha->work_lock, flags);
11151115
11161116 ql_dbg(ql_dbg_disc, vha, 0xf001,
11171117 "Unregistration of sess %p %8phC finished fcp_cnt %d\n",
....@@ -1161,12 +1161,12 @@
11611161 * management from being sent.
11621162 */
11631163 sess->flags |= FCF_ASYNC_SENT;
1164
+ sess->deleted = QLA_SESS_DELETION_IN_PROGRESS;
11641165 spin_unlock_irqrestore(&sess->vha->work_lock, flags);
11651166
11661167 if (sess->se_sess)
11671168 vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess);
11681169
1169
- sess->deleted = QLA_SESS_DELETION_IN_PROGRESS;
11701170 qla2x00_set_fcport_disc_state(sess, DSC_DELETE_PEND);
11711171 sess->last_rscn_gen = sess->rscn_gen;
11721172 sess->last_login_gen = sess->login_gen;