Prior commit 4fa507992f0a ("scsi: libiscsi: Fix locking in __iscsi_conn_send_pdu") changed back_lock to be taken/released with spin_(un)lock rather than spin_(un)lock_bh in __iscsi_conn_send_pdu. The usage of taskqueuelock in __iscsi_conn_send_pdu has the same issue and the same argument for the safety of using spin_lock applies. The improper usage of spin_lock_bh/spin_unlock_bh inside of spin_lock_irq may cause deadlocks involving queue_lock or frwd_lock when a softirq runs at or after spin_unlock_bh. Signed-off-by: Christopher Unkel <cunkel@xxxxxxxxxxxxxx> --- drivers/scsi/libiscsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 15a2fef51e38..d43bf1db411b 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c @@ -788,9 +788,9 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, if (session->tt->xmit_task(task)) goto free_task; } else { - spin_lock_bh(&conn->taskqueuelock); + spin_lock(&conn->taskqueuelock); list_add_tail(&task->running, &conn->mgmtqueue); - spin_unlock_bh(&conn->taskqueuelock); + spin_unlock(&conn->taskqueuelock); iscsi_conn_queue_work(conn); } -- 2.14.3