diff --git a/scst/include/scst.h b/scst/include/scst.h index 24785be15..ee37e8317 100644 --- a/scst/include/scst.h +++ b/scst/include/scst.h @@ -2528,7 +2528,7 @@ struct scst_tgt_dev { /* List entry in dev->dev_tgt_dev_list */ struct list_head dev_tgt_dev_list_entry; - /* Internal tmp list entry */ + /* Internal tmp list entry. User must hold scst_mutex. */ struct list_head extra_tgt_dev_list_entry; /* Set if INQUIRY DATA HAS CHANGED UA is needed */ diff --git a/scst/src/scst_targ.c b/scst/src/scst_targ.c index ba7d07362..ddfa29ffb 100644 --- a/scst/src/scst_targ.c +++ b/scst/src/scst_targ.c @@ -5212,8 +5212,6 @@ static int scst_clear_task_set(struct scst_mgmt_cmd *mcmd) scst_unblock_aborted_cmds(1); - mutex_unlock(&scst_mutex); - if (!dev->tas) { uint8_t sense_buffer[SCST_STANDARD_SENSE_LEN]; int sl; @@ -5228,6 +5226,8 @@ static int scst_clear_task_set(struct scst_mgmt_cmd *mcmd) } } + mutex_unlock(&scst_mutex); + scst_call_dev_task_mgmt_fn_received(mcmd, mcmd->mcmd_tgt_dev); res = scst_set_mcmd_next_state(mcmd);