summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuinn Tran <qutran@marvell.com>2019-07-26 09:07:38 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-12-17 20:35:23 +0100
commite46f7e2f0efc44f32204fc7a732fc832088fc7ed (patch)
treee7d41ed48e194a42f9e5848764b6e18cf5eb45fd
parentbd9138ac3ff56b72dc742563eadbf6753d71768a (diff)
downloadlinux-stable-e46f7e2f0efc44f32204fc7a732fc832088fc7ed.tar.gz
linux-stable-e46f7e2f0efc44f32204fc7a732fc832088fc7ed.tar.bz2
linux-stable-e46f7e2f0efc44f32204fc7a732fc832088fc7ed.zip
scsi: qla2xxx: Fix hang in fcport delete path
[ Upstream commit f00b3428a801758243693e046b34226e92bc56b3 ] A hang was observed in the fcport delete path when the device was responding slow and an issue-lip path (results in session termination) was taken. Fix this by issuing logo requests unconditionally. PID: 19491 TASK: ffff8e23e67bb150 CPU: 0 COMMAND: "kworker/0:0" #0 [ffff8e2370297bf8] __schedule at ffffffffb4f7dbb0 #1 [ffff8e2370297c88] schedule at ffffffffb4f7e199 #2 [ffff8e2370297c98] schedule_timeout at ffffffffb4f7ba68 #3 [ffff8e2370297d40] msleep at ffffffffb48ad9ff #4 [ffff8e2370297d58] qlt_free_session_done at ffffffffc0c32052 [qla2xxx] #5 [ffff8e2370297e20] process_one_work at ffffffffb48bcfdf #6 [ffff8e2370297e68] worker_thread at ffffffffb48bdca6 #7 [ffff8e2370297ec8] kthread at ffffffffb48c4f81 Signed-off-by: Quinn Tran <qutran@marvell.com> Signed-off-by: Himanshu Madhani <hmadhani@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index df91847d20cd..9cb5527d3d8f 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -291,9 +291,6 @@ qla2x00_async_logout(struct scsi_qla_host *vha, fc_port_t *fcport)
struct srb_iocb *lio;
int rval = QLA_FUNCTION_FAILED;
- if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
- return rval;
-
fcport->flags |= FCF_ASYNC_SENT;
sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
if (!sp)