[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git-commits-head
Subject:    target: Drop signal_pending checks after interruptible lock acquire
From:       "Linux Kernel Mailing List" <linux-kernel () vger ! kernel ! org>
Date:       2015-05-31 19:06:11
Message-ID: 20150531190611.4AE6A660D97 () gitolite ! kernel ! org
[Download RAW message or body]

Gitweb:     http://git.kernel.org/linus/;a=commit;h=ee7619f2eb21304dcc846b8dc8f8c3d6cbe11792
Commit:     ee7619f2eb21304dcc846b8dc8f8c3d6cbe11792
Parent:     6c2faeaa0ecc67098106771cba8b7ed1e99a1b5f
Refname:    refs/heads/master
Author:     Nicholas Bellinger <nab@linux-iscsi.org>
AuthorDate: Tue May 19 15:10:44 2015 -0700
Committer:  Nicholas Bellinger <nab@linux-iscsi.org>
CommitDate: Tue May 19 15:18:20 2015 -0700

    target: Drop signal_pending checks after interruptible lock acquire
    
    Once upon a time, iscsit_get_tpg() was using an un-interruptible
    lock.  The signal_pending() usage was a check to allow userspace
    to break out of the operation with SIGINT.
    
    AFAICT, there's no reason why this is necessary anymore, and as
    reported by Alexey can be potentially dangerous.  Also, go ahead
    and drop the other two problematic cases within iscsit_access_np()
    and sbc_compare_and_write() as well.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Reported-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
---
 drivers/target/iscsi/iscsi_target.c     | 2 +-
 drivers/target/iscsi/iscsi_target_tpg.c | 5 +----
 drivers/target/target_core_sbc.c        | 2 +-
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 34871a6..74e6114 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -230,7 +230,7 @@ int iscsit_access_np(struct iscsi_np *np, struct iscsi_portal_group *tpg)
 	 * Here we serialize access across the TIQN+TPG Tuple.
 	 */
 	ret = down_interruptible(&tpg->np_login_sem);
-	if ((ret != 0) || signal_pending(current))
+	if (ret != 0)
 		return -1;
 
 	spin_lock_bh(&tpg->tpg_state_lock);
diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c
index e8a2408..5e3295f 100644
--- a/drivers/target/iscsi/iscsi_target_tpg.c
+++ b/drivers/target/iscsi/iscsi_target_tpg.c
@@ -161,10 +161,7 @@ struct iscsi_portal_group *iscsit_get_tpg_from_np(
 int iscsit_get_tpg(
 	struct iscsi_portal_group *tpg)
 {
-	int ret;
-
-	ret = mutex_lock_interruptible(&tpg->tpg_access_lock);
-	return ((ret != 0) || signal_pending(current)) ? -1 : 0;
+	return mutex_lock_interruptible(&tpg->tpg_access_lock);
 }
 
 void iscsit_put_tpg(struct iscsi_portal_group *tpg)
diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c
index 8855781..733824e 100644
--- a/drivers/target/target_core_sbc.c
+++ b/drivers/target/target_core_sbc.c
@@ -568,7 +568,7 @@ sbc_compare_and_write(struct se_cmd *cmd)
 	 * comparision using SGLs at cmd->t_bidi_data_sg..
 	 */
 	rc = down_interruptible(&dev->caw_sem);
-	if ((rc != 0) || signal_pending(current)) {
+	if (rc != 0) {
 		cmd->transport_complete_callback = NULL;
 		return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
 	}
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic