target: use save/restore lock primitive in core_dec_lacl_count()
It may happen that uasp will free the request in irq conntext, the callchain: uasp_cmd_release() -> transport_generic_free_cmd() -> core_dec_lacl_count() where the last function enables the IRQ. Those irqs are re-disabled later (due to the spin.*irq_restore) but in between we could get hurt. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
e59a41b69a
commit
1dd0a06745
|
@ -320,11 +320,12 @@ int core_free_device_list_for_node(
|
|||
void core_dec_lacl_count(struct se_node_acl *se_nacl, struct se_cmd *se_cmd)
|
||||
{
|
||||
struct se_dev_entry *deve;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irq(&se_nacl->device_list_lock);
|
||||
spin_lock_irqsave(&se_nacl->device_list_lock, flags);
|
||||
deve = &se_nacl->device_list[se_cmd->orig_fe_lun];
|
||||
deve->deve_cmds--;
|
||||
spin_unlock_irq(&se_nacl->device_list_lock);
|
||||
spin_unlock_irqrestore(&se_nacl->device_list_lock, flags);
|
||||
}
|
||||
|
||||
void core_update_device_list_access(
|
||||
|
|
Loading…
Reference in New Issue