scsi: libiscsi: Fix locking in __iscsi_conn_send_pdu
The code at free_task label in __iscsi_conn_send_pdu can get executed from blk_timeout_work which takes queue_lock using spin_lock_irq. back_lock taken with spin_unlock_bh will cause WARN_ON_ONCE. The code gets executed either with bottom half or IRQ disabled hence using spin_lock/spin_unlock for back_lock is safe. Signed-off-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Chris Leech <cleech@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
8a4236a2c7
Коммит
4fa507992f
|
@ -791,9 +791,9 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
|
||||||
|
|
||||||
free_task:
|
free_task:
|
||||||
/* regular RX path uses back_lock */
|
/* regular RX path uses back_lock */
|
||||||
spin_lock_bh(&session->back_lock);
|
spin_lock(&session->back_lock);
|
||||||
__iscsi_put_task(task);
|
__iscsi_put_task(task);
|
||||||
spin_unlock_bh(&session->back_lock);
|
spin_unlock(&session->back_lock);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче