]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Feb 2020 10:14:05 +0000 (11:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Feb 2020 10:14:05 +0000 (11:14 +0100)
added patches:
ecryptfs-replace-bug_on-with-error-handling-code.patch
scsi-revert-rdma-isert-fix-a-recently-introduced-regression-related-to-logout.patch
scsi-revert-target-iscsi-wait-for-all-commands-to-finish-before-freeing-a-session.patch

queue-4.4/ecryptfs-replace-bug_on-with-error-handling-code.patch [new file with mode: 0644]
queue-4.4/scsi-revert-rdma-isert-fix-a-recently-introduced-regression-related-to-logout.patch [new file with mode: 0644]
queue-4.4/scsi-revert-target-iscsi-wait-for-all-commands-to-finish-before-freeing-a-session.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/ecryptfs-replace-bug_on-with-error-handling-code.patch b/queue-4.4/ecryptfs-replace-bug_on-with-error-handling-code.patch
new file mode 100644 (file)
index 0000000..52184a6
--- /dev/null
@@ -0,0 +1,39 @@
+From 2c2a7552dd6465e8fde6bc9cccf8d66ed1c1eb72 Mon Sep 17 00:00:00 2001
+From: Aditya Pakki <pakki001@umn.edu>
+Date: Fri, 14 Feb 2020 12:21:01 -0600
+Subject: ecryptfs: replace BUG_ON with error handling code
+
+From: Aditya Pakki <pakki001@umn.edu>
+
+commit 2c2a7552dd6465e8fde6bc9cccf8d66ed1c1eb72 upstream.
+
+In crypt_scatterlist, if the crypt_stat argument is not set up
+correctly, the kernel crashes. Instead, by returning an error code
+upstream, the error is handled safely.
+
+The issue is detected via a static analysis tool written by us.
+
+Fixes: 237fead619984 (ecryptfs: fs/Makefile and fs/Kconfig)
+Signed-off-by: Aditya Pakki <pakki001@umn.edu>
+Signed-off-by: Tyler Hicks <code@tyhicks.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ecryptfs/crypto.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/fs/ecryptfs/crypto.c
++++ b/fs/ecryptfs/crypto.c
+@@ -346,8 +346,10 @@ static int crypt_scatterlist(struct ecry
+       struct extent_crypt_result ecr;
+       int rc = 0;
+-      BUG_ON(!crypt_stat || !crypt_stat->tfm
+-             || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED));
++      if (!crypt_stat || !crypt_stat->tfm
++             || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED))
++              return -EINVAL;
++
+       if (unlikely(ecryptfs_verbosity > 0)) {
+               ecryptfs_printk(KERN_DEBUG, "Key size [%zd]; key:\n",
+                               crypt_stat->key_size);
diff --git a/queue-4.4/scsi-revert-rdma-isert-fix-a-recently-introduced-regression-related-to-logout.patch b/queue-4.4/scsi-revert-rdma-isert-fix-a-recently-introduced-regression-related-to-logout.patch
new file mode 100644 (file)
index 0000000..88c2aeb
--- /dev/null
@@ -0,0 +1,77 @@
+From 76261ada16dcc3be610396a46d35acc3efbda682 Mon Sep 17 00:00:00 2001
+From: Bart Van Assche <bvanassche@acm.org>
+Date: Wed, 12 Feb 2020 21:08:59 -0800
+Subject: scsi: Revert "RDMA/isert: Fix a recently introduced regression related to logout"
+
+From: Bart Van Assche <bvanassche@acm.org>
+
+commit 76261ada16dcc3be610396a46d35acc3efbda682 upstream.
+
+Since commit 04060db41178 introduces soft lockups when toggling network
+interfaces, revert it.
+
+Link: https://marc.info/?l=target-devel&m=158157054906196
+Cc: Rahul Kundu <rahul.kundu@chelsio.com>
+Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
+Cc: Sagi Grimberg <sagi@grimberg.me>
+Reported-by: Dakshaja Uppalapati <dakshaja@chelsio.com>
+Fixes: 04060db41178 ("scsi: RDMA/isert: Fix a recently introduced regression related to logout")
+Signed-off-by: Bart Van Assche <bvanassche@acm.org>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/infiniband/ulp/isert/ib_isert.c |   12 ++++++++++++
+ drivers/target/iscsi/iscsi_target.c     |    6 +++---
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+--- a/drivers/infiniband/ulp/isert/ib_isert.c
++++ b/drivers/infiniband/ulp/isert/ib_isert.c
+@@ -3295,6 +3295,17 @@ isert_wait4flush(struct isert_conn *iser
+       wait_for_completion(&isert_conn->wait_comp_err);
+ }
++static void
++isert_wait4cmds(struct iscsi_conn *conn)
++{
++      isert_info("iscsi_conn %p\n", conn);
++
++      if (conn->sess) {
++              target_sess_cmd_list_set_waiting(conn->sess->se_sess);
++              target_wait_for_sess_cmds(conn->sess->se_sess);
++      }
++}
++
+ /**
+  * isert_put_unsol_pending_cmds() - Drop commands waiting for
+  *     unsolicitate dataout
+@@ -3350,6 +3361,7 @@ static void isert_wait_conn(struct iscsi
+       isert_wait4flush(isert_conn);
+       isert_put_unsol_pending_cmds(conn);
++      isert_wait4cmds(conn);
+       isert_wait4logout(isert_conn);
+       queue_work(isert_release_wq, &isert_conn->release_work);
+--- a/drivers/target/iscsi/iscsi_target.c
++++ b/drivers/target/iscsi/iscsi_target.c
+@@ -4309,6 +4309,9 @@ int iscsit_close_connection(
+       iscsit_stop_nopin_response_timer(conn);
+       iscsit_stop_nopin_timer(conn);
++      if (conn->conn_transport->iscsit_wait_conn)
++              conn->conn_transport->iscsit_wait_conn(conn);
++
+       /*
+        * During Connection recovery drop unacknowledged out of order
+        * commands for this connection, and prepare the other commands
+@@ -4394,9 +4397,6 @@ int iscsit_close_connection(
+       target_sess_cmd_list_set_waiting(sess->se_sess);
+       target_wait_for_sess_cmds(sess->se_sess);
+-      if (conn->conn_transport->iscsit_wait_conn)
+-              conn->conn_transport->iscsit_wait_conn(conn);
+-
+       if (conn->conn_rx_hash.tfm)
+               crypto_free_hash(conn->conn_rx_hash.tfm);
+       if (conn->conn_tx_hash.tfm)
diff --git a/queue-4.4/scsi-revert-target-iscsi-wait-for-all-commands-to-finish-before-freeing-a-session.patch b/queue-4.4/scsi-revert-target-iscsi-wait-for-all-commands-to-finish-before-freeing-a-session.patch
new file mode 100644 (file)
index 0000000..aa87352
--- /dev/null
@@ -0,0 +1,70 @@
+From 807b9515b7d044cf77df31f1af9d842a76ecd5cb Mon Sep 17 00:00:00 2001
+From: Bart Van Assche <bvanassche@acm.org>
+Date: Wed, 12 Feb 2020 21:09:00 -0800
+Subject: scsi: Revert "target: iscsi: Wait for all commands to finish before freeing a session"
+
+From: Bart Van Assche <bvanassche@acm.org>
+
+commit 807b9515b7d044cf77df31f1af9d842a76ecd5cb upstream.
+
+Since commit e9d3009cb936 introduced a regression and since the fix for
+that regression was not perfect, revert this commit.
+
+Link: https://marc.info/?l=target-devel&m=158157054906195
+Cc: Rahul Kundu <rahul.kundu@chelsio.com>
+Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
+Cc: Sagi Grimberg <sagi@grimberg.me>
+Reported-by: Dakshaja Uppalapati <dakshaja@chelsio.com>
+Fixes: e9d3009cb936 ("scsi: target: iscsi: Wait for all commands to finish before freeing a session")
+Signed-off-by: Bart Van Assche <bvanassche@acm.org>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/target/iscsi/iscsi_target.c |   10 ++--------
+ include/scsi/iscsi_proto.h          |    1 -
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+--- a/drivers/target/iscsi/iscsi_target.c
++++ b/drivers/target/iscsi/iscsi_target.c
+@@ -993,9 +993,7 @@ int iscsit_setup_scsi_cmd(struct iscsi_c
+               hdr->cmdsn, be32_to_cpu(hdr->data_length), payload_length,
+               conn->cid);
+-      if (target_get_sess_cmd(&cmd->se_cmd, true) < 0)
+-              return iscsit_add_reject_cmd(cmd,
+-                              ISCSI_REASON_WAITING_FOR_LOGOUT, buf);
++      target_get_sess_cmd(&cmd->se_cmd, true);
+       cmd->sense_reason = transport_lookup_cmd_lun(&cmd->se_cmd,
+                                                    scsilun_to_int(&hdr->lun));
+@@ -1806,9 +1804,7 @@ iscsit_handle_task_mgt_cmd(struct iscsi_
+                             conn->sess->se_sess, 0, DMA_NONE,
+                             TCM_SIMPLE_TAG, cmd->sense_buffer + 2);
+-      if (target_get_sess_cmd(&cmd->se_cmd, true) < 0)
+-              return iscsit_add_reject_cmd(cmd,
+-                              ISCSI_REASON_WAITING_FOR_LOGOUT, buf);
++      target_get_sess_cmd(&cmd->se_cmd, true);
+       /*
+        * TASK_REASSIGN for ERL=2 / connection stays inside of
+@@ -4394,8 +4390,6 @@ int iscsit_close_connection(
+        * must wait until they have completed.
+        */
+       iscsit_check_conn_usage_count(conn);
+-      target_sess_cmd_list_set_waiting(sess->se_sess);
+-      target_wait_for_sess_cmds(sess->se_sess);
+       if (conn->conn_rx_hash.tfm)
+               crypto_free_hash(conn->conn_rx_hash.tfm);
+--- a/include/scsi/iscsi_proto.h
++++ b/include/scsi/iscsi_proto.h
+@@ -638,7 +638,6 @@ struct iscsi_reject {
+ #define ISCSI_REASON_BOOKMARK_INVALID 9
+ #define ISCSI_REASON_BOOKMARK_NO_RESOURCES    10
+ #define ISCSI_REASON_NEGOTIATION_RESET        11
+-#define ISCSI_REASON_WAITING_FOR_LOGOUT       12
+ /* Max. number of Key=Value pairs in a text message */
+ #define MAX_KEY_VALUE_PAIRS   8192
index de34c41724677873530eed7d77f1adf53628f800..9761d7f0331a8d79f30d54e8a8434dbe7725f8dd 100644 (file)
@@ -104,3 +104,6 @@ kvm-nvmx-refactor-io-bitmap-checks-into-helper-function.patch
 kvm-nvmx-check-io-instruction-vm-exit-conditions.patch
 kvm-apic-avoid-calculating-pending-eoi-from-an-uninitialized-val.patch
 btrfs-fix-btrfs_wait_ordered_range-so-that-it-waits-for-all-ordered-extents.patch
+scsi-revert-rdma-isert-fix-a-recently-introduced-regression-related-to-logout.patch
+scsi-revert-target-iscsi-wait-for-all-commands-to-finish-before-freeing-a-session.patch
+ecryptfs-replace-bug_on-with-error-handling-code.patch