aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorManish Rangankar <manish.rangankar@qlogic.com>2012-04-24 01:32:33 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-05-30 04:56:08 -0400
commit3d948e2a21ed8641a84ad437d2544b215d747916 (patch)
tree5a5fc4b4edcbb72fef4ed2a9cf9ac376c0a1794a /drivers/scsi
parent5f50aa3ad54f3d029026d437f43324ce336dd8f5 (diff)
[SCSI] qla4xxx: Fix kernel panic during discovery logout.
Update the session and connection parameter before sending connection logged in event to iscsiadm because in some scenario logout may come in just after we send the logged in event to user, which free up session, connection and ddb, but DPC is still updating session and connect parameter which can lead to panic. Signed-off-by: Manish Rangankar <manish.rangankar@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla4xxx/ql4_init.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c
index 90ee5d8fa731..05484364010e 100644
--- a/drivers/scsi/qla4xxx/ql4_init.c
+++ b/drivers/scsi/qla4xxx/ql4_init.c
@@ -884,8 +884,8 @@ int qla4xxx_ddb_change(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
884 switch (state) { 884 switch (state) {
885 case DDB_DS_SESSION_ACTIVE: 885 case DDB_DS_SESSION_ACTIVE:
886 case DDB_DS_DISCOVERY: 886 case DDB_DS_DISCOVERY:
887 ddb_entry->unblock_sess(ddb_entry->sess);
888 qla4xxx_update_session_conn_param(ha, ddb_entry); 887 qla4xxx_update_session_conn_param(ha, ddb_entry);
888 ddb_entry->unblock_sess(ddb_entry->sess);
889 status = QLA_SUCCESS; 889 status = QLA_SUCCESS;
890 break; 890 break;
891 case DDB_DS_SESSION_FAILED: 891 case DDB_DS_SESSION_FAILED:
@@ -897,6 +897,7 @@ int qla4xxx_ddb_change(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
897 } 897 }
898 break; 898 break;
899 case DDB_DS_SESSION_ACTIVE: 899 case DDB_DS_SESSION_ACTIVE:
900 case DDB_DS_DISCOVERY:
900 switch (state) { 901 switch (state) {
901 case DDB_DS_SESSION_FAILED: 902 case DDB_DS_SESSION_FAILED:
902 /* 903 /*