From: Sasha Levin Date: Mon, 20 Apr 2020 01:21:55 +0000 (-0400) Subject: Fixes for 5.6 X-Git-Tag: v4.19.117~8^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d5aee7849356d1c7f52fe78ab551f74d8058c235;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.6 Signed-off-by: Sasha Levin --- 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 index 00000000000..923f189286d --- /dev/null +++ b/queue-5.6/scsi-target-iscsi-calling-iscsit_stop_session-inside.patch @@ -0,0 +1,44 @@ +From 88d5a0ee803b79b9444c2f6b4e0e12df05e580ed Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Signed-off-by: Maurizio Lombardi +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + 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 + diff --git a/queue-5.6/series b/queue-5.6/series index cb4c4332703..91f5ed443de 100644 --- a/queue-5.6/series +++ b/queue-5.6/series @@ -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