linux/drivers/scsi/qedi
Mike Christie d1f2ce7763 scsi: qedi: Fix host removal with running sessions
qedi_clear_session_ctx() could race with the in-kernel or userspace driven
recovery/removal and we could access a NULL conn or do a double free.

We should be using iscsi_host_remove() to start the removal process from
the driver. It will start the in-kernel recovery and notify userspace that
the driver's scsi_hosts are being removed. iscsid will then drive the
session removal like is done when the logout command is run. When the
sessions are removed, iscsi_host_remove() will return so qedi can finish
knowing there are no running sessions and no new sessions will be allowed.

This also fixes an issue where we check for a NULL conn after already
accessing it introduced in commit 27e986289e ("scsi: iscsi: Drop suspend
calls from ep_disconnect") by just removing the function completely.

Link: https://lore.kernel.org/r/20210609192709.5094-1-michael.christie@oracle.com
Fixes: 27e986289e ("scsi: iscsi: Drop suspend calls from ep_disconnect")
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2021-06-09 23:06:57 -04:00
..
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile
qedi_dbg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_dbg.h scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
qedi_debugfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_fw_api.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_fw_iscsi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_fw_scsi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_fw.c scsi: qedi: Wake up if cmd_cleanup_req is set 2021-06-02 01:28:23 -04:00
qedi_gbl.h scsi: qedi: Fix host removal with running sessions 2021-06-09 23:06:57 -04:00
qedi_hsi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_iscsi.c scsi: qedi: Fix host removal with running sessions 2021-06-09 23:06:57 -04:00
qedi_iscsi.h scsi: qedi: Complete TMF works before disconnect 2021-06-02 01:28:23 -04:00
qedi_main.c scsi: qedi: Fix host removal with running sessions 2021-06-09 23:06:57 -04:00
qedi_nvm_iscsi_cfg.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_sysfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440 2019-06-05 17:37:17 +02:00
qedi_version.h SCSI fixes on 20190622 2019-06-22 09:39:03 -07:00
qedi.h scsi: qedi: Fix cleanup session block/unblock use 2021-06-02 01:28:23 -04:00