Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fa50799 authored by Jitendra Bhivare's avatar Jitendra Bhivare Committed by Martin K. Petersen
Browse files

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: default avatarJitendra Bhivare <jitendra.bhivare@broadcom.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Reviewed-by: default avatarChris Leech <cleech@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 8a4236a2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -791,9 +791,9 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr,

free_task:
	/* regular RX path uses back_lock */
	spin_lock_bh(&session->back_lock);
	spin_lock(&session->back_lock);
	__iscsi_put_task(task);
	spin_unlock_bh(&session->back_lock);
	spin_unlock(&session->back_lock);
	return NULL;
}