]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.6
authorSasha Levin <sashal@kernel.org>
Mon, 20 Apr 2020 01:21:55 +0000 (21:21 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 20 Apr 2020 01:21:55 +0000 (21:21 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.6/scsi-target-iscsi-calling-iscsit_stop_session-inside.patch [new file with mode: 0644]
queue-5.6/series

diff --git a/queue-5.6/scsi-target-iscsi-calling-iscsit_stop_session-inside.patch b/queue-5.6/scsi-target-iscsi-calling-iscsit_stop_session-inside.patch
new file mode 100644 (file)
index 0000000..923f189
--- /dev/null
@@ -0,0 +1,44 @@
+From 88d5a0ee803b79b9444c2f6b4e0e12df05e580ed Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 13 Mar 2020 18:06:56 +0100
+Subject: scsi: target: iscsi: calling iscsit_stop_session() inside
+ iscsit_close_session() has no effect
+
+From: Maurizio Lombardi <mlombard@redhat.com>
+
+[ Upstream commit 626bac73371eed79e2afa2966de393da96cf925e ]
+
+iscsit_close_session() can only be called when nconn is zero (otherwise a
+kernel panic is triggered). If nconn is zero then iscsit_stop_session()
+does nothing and exits, so calling it makes no sense.
+
+We still need to call iscsit_check_session_usage_count() because this
+function will sleep if the session's refcount is not zero and we don't want
+to destroy the session structure if it's still being referenced.
+
+Link: https://lore.kernel.org/r/20200313170656.9716-4-mlombard@redhat.com
+Tested-by: Rahul Kundu <rahul.kundu@chelsio.com>
+Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/target/iscsi/iscsi_target.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
+index 09e55ea0bf5d5..9fc7e374a29b4 100644
+--- a/drivers/target/iscsi/iscsi_target.c
++++ b/drivers/target/iscsi/iscsi_target.c
+@@ -4368,8 +4368,7 @@ int iscsit_close_session(struct iscsi_session *sess)
+        * restart the timer and exit.
+        */
+       if (!in_interrupt()) {
+-              if (iscsit_check_session_usage_count(sess) == 1)
+-                      iscsit_stop_session(sess, 1, 1);
++              iscsit_check_session_usage_count(sess);
+       } else {
+               if (iscsit_check_session_usage_count(sess) == 2) {
+                       atomic_set(&sess->session_logout, 0);
+-- 
+2.20.1
+
index cb4c43327038540d9248ad78603f65b015f90d7a..91f5ed443de7dcfb603208195900e0d8022554ac 100644 (file)
@@ -61,3 +61,4 @@ drm-amdgpu-fix-the-hw-hang-during-perform-system-reboot-and-reset.patch
 i2c-designware-platdrv-remove-dpm_flag_smart_suspend-flag-on-byt-and-cht.patch
 drm-nouveau-sec2-gv100-add-missing-module_firmware.patch
 drm-i915-perf-do-not-clear-pollin-for-small-user-read-buffers.patch
+scsi-target-iscsi-calling-iscsit_stop_session-inside.patch