[PATCH] scsi: libiscsi: fix taskqueuelock usage in __iscsi_conn_send_pdu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux