]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: qla2xxx: Fix session hang in gnl
authorQuinn Tran <qutran@marvell.com>
Fri, 14 Jul 2023 07:01:00 +0000 (12:31 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Sep 2023 10:27:55 +0000 (12:27 +0200)
commit 39d22740712c7563a2e18c08f033deeacdaf66e7 upstream.

Connection does not resume after a host reset / chip reset. The cause of
the blockage is due to the FCF_ASYNC_ACTIVE left on. The gnl command was
interrupted by the chip reset. On exiting the command, this flag should be
turn off to allow relogin to reoccur. Clear this flag to prevent blockage.

Cc: stable@vger.kernel.org
Fixes: 17e64648aa47 ("scsi: qla2xxx: Correct fcport flags handling")
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://lore.kernel.org/r/20230714070104.40052-7-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/qla2xxx/qla_init.c

index 03ef225cfd2faf49f0be8bb5e98cb1f3a1d0d458..e122fe8423e2ca8c358aaf52b9c4499b2c4f9db5 100644 (file)
@@ -1135,7 +1135,7 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport)
        u16 *mb;
 
        if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
-               return rval;
+               goto done;
 
        ql_dbg(ql_dbg_disc, vha, 0x20d9,
            "Async-gnlist WWPN %8phC \n", fcport->port_name);
@@ -1189,8 +1189,9 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport)
 done_free_sp:
        /* ref: INIT */
        kref_put(&sp->cmd_kref, qla2x00_sp_release);
+       fcport->flags &= ~(FCF_ASYNC_SENT);
 done:
-       fcport->flags &= ~(FCF_ASYNC_ACTIVE | FCF_ASYNC_SENT);
+       fcport->flags &= ~(FCF_ASYNC_ACTIVE);
        return rval;
 }