Merge of the trunk's r2867:

Fix rarely possible race between scst_free_session() and scst_check_reassign_sess()



git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/2.0.0.x@2868 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2010-11-29 17:14:55 +00:00
parent c1f5c42fa4
commit ed2dc7bdaf
2 changed files with 7 additions and 0 deletions

View File

@@ -1719,6 +1719,9 @@ static void scst_check_reassign_sess(struct scst_session *sess)
TRACE_ENTRY();
if (tgt_dev->sess->shut_phase != SCST_SESS_SPH_READY)
goto out;
TRACE_MGMT_DBG("Checking reassignment for sess %p (initiator %s)",
sess, sess->initiator_name);

View File

@@ -6254,6 +6254,10 @@ static int scst_init_session(struct scst_session *sess)
if (res != 0)
goto failed;
/*
* scst_sess_alloc_tgt_devs() must be called after session added in the
* sess_list to not race with scst_check_reassign_sess()!
*/
res = scst_sess_alloc_tgt_devs(sess);
failed: