| From 50457dab670f396557e60c07f086358460876353 Mon Sep 17 00:00:00 2001 |
| From: Quinn Tran <qutran@marvell.com> |
| Date: Tue, 29 Sep 2020 03:21:50 -0700 |
| Subject: scsi: qla2xxx: Fix crash on session cleanup with unload |
| |
| From: Quinn Tran <qutran@marvell.com> |
| |
| commit 50457dab670f396557e60c07f086358460876353 upstream. |
| |
| On unload, session cleanup prematurely gave the signal for driver unload |
| path to advance. |
| |
| Link: https://lore.kernel.org/r/20200929102152.32278-6-njavali@marvell.com |
| Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery") |
| Cc: stable@vger.kernel.org |
| Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> |
| Signed-off-by: Quinn Tran <qutran@marvell.com> |
| Signed-off-by: Nilesh Javali <njavali@marvell.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/scsi/qla2xxx/qla_target.c | 13 +++++++------ |
| 1 file changed, 7 insertions(+), 6 deletions(-) |
| |
| --- a/drivers/scsi/qla2xxx/qla_target.c |
| +++ b/drivers/scsi/qla2xxx/qla_target.c |
| @@ -1229,14 +1229,15 @@ void qlt_schedule_sess_for_deletion(stru |
| case DSC_DELETE_PEND: |
| return; |
| case DSC_DELETED: |
| - if (tgt && tgt->tgt_stop && (tgt->sess_count == 0)) |
| - wake_up_all(&tgt->waitQ); |
| - if (sess->vha->fcport_count == 0) |
| - wake_up_all(&sess->vha->fcport_waitQ); |
| - |
| if (!sess->plogi_link[QLT_PLOGI_LINK_SAME_WWN] && |
| - !sess->plogi_link[QLT_PLOGI_LINK_CONFLICT]) |
| + !sess->plogi_link[QLT_PLOGI_LINK_CONFLICT]) { |
| + if (tgt && tgt->tgt_stop && tgt->sess_count == 0) |
| + wake_up_all(&tgt->waitQ); |
| + |
| + if (sess->vha->fcport_count == 0) |
| + wake_up_all(&sess->vha->fcport_waitQ); |
| return; |
| + } |
| break; |
| case DSC_UPD_FCPORT: |
| /* |