target: Convert transport_deregister_session_configfs nacl_sess_lock to save irq state
This patch converts transport_deregister_session_configfs() to save/restore spinlock IRQ state for struct se_node_acl->nacl_sess_lock access as tcm_qla2xxx logic expects to call transport_deregister_session_configfs() code with irq save already held for struct qla_hw_data. Reported-by: Roland Dreier <roland@purestorage.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
7fd29aa920
commit
233888644d
|
@ -536,13 +536,13 @@ EXPORT_SYMBOL(transport_register_session);
|
|||
void transport_deregister_session_configfs(struct se_session *se_sess)
|
||||
{
|
||||
struct se_node_acl *se_nacl;
|
||||
|
||||
unsigned long flags;
|
||||
/*
|
||||
* Used by struct se_node_acl's under ConfigFS to locate active struct se_session
|
||||
*/
|
||||
se_nacl = se_sess->se_node_acl;
|
||||
if ((se_nacl)) {
|
||||
spin_lock_irq(&se_nacl->nacl_sess_lock);
|
||||
spin_lock_irqsave(&se_nacl->nacl_sess_lock, flags);
|
||||
list_del(&se_sess->sess_acl_list);
|
||||
/*
|
||||
* If the session list is empty, then clear the pointer.
|
||||
|
@ -556,7 +556,7 @@ void transport_deregister_session_configfs(struct se_session *se_sess)
|
|||
se_nacl->acl_sess_list.prev,
|
||||
struct se_session, sess_acl_list);
|
||||
}
|
||||
spin_unlock_irq(&se_nacl->nacl_sess_lock);
|
||||
spin_unlock_irqrestore(&se_nacl->nacl_sess_lock, flags);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(transport_deregister_session_configfs);
|
||||
|
|
Loading…
Reference in New Issue