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

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2867 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2010-11-29 17:12:53 +00:00
parent f9ca99c4da
commit d83c11c1a3
2 changed files with 7 additions and 0 deletions

View File

@@ -1716,6 +1716,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

@@ -6168,6 +6168,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: