]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scsi: qla2xxx: Fix crash on session cleanup with unload
authorQuinn Tran <qutran@marvell.com>
Tue, 29 Sep 2020 10:21:50 +0000 (03:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Nov 2020 10:43:26 +0000 (11:43 +0100)
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

index d84d95cac2a13df675db88430dd2733578f80dad..412009e2b9488264c38417164c448976353ce9b6 100644 (file)
@@ -1230,14 +1230,15 @@ void qlt_schedule_sess_for_deletion(struct fc_port *sess)
        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:
                /*