OSDN Git Service

scsi: qla2xxx: Correct fcport flags handling
authorShyam Sundar <ssundar@marvell.com>
Tue, 17 Dec 2019 22:06:12 +0000 (14:06 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 21 Dec 2019 18:42:41 +0000 (13:42 -0500)
This patch fixes some instances of FCF_ASYNC_{SENT|ACTIVE} flag setting and
clearning were missing.

Link: https://lore.kernel.org/r/20191217220617.28084-10-hmadhani@marvell.com
Signed-off-by: Shyam Sundar <ssundar@marvell.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_gs.c
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_iocb.c

index f11fb00..aaa4a5b 100644 (file)
@@ -2963,7 +2963,6 @@ int qla24xx_post_gpsc_work(struct scsi_qla_host *vha, fc_port_t *fcport)
                return QLA_FUNCTION_FAILED;
 
        e->u.fcport.fcport = fcport;
-       fcport->flags |= FCF_ASYNC_ACTIVE;
        return qla2x00_post_work(vha, e);
 }
 
@@ -3097,9 +3096,7 @@ int qla24xx_async_gpsc(scsi_qla_host_t *vha, fc_port_t *fcport)
 
 done_free_sp:
        sp->free(sp);
-       fcport->flags &= ~FCF_ASYNC_SENT;
 done:
-       fcport->flags &= ~FCF_ASYNC_ACTIVE;
        return rval;
 }
 
@@ -4464,7 +4461,6 @@ int qla24xx_async_gfpnid(scsi_qla_host_t *vha, fc_port_t *fcport)
 
 done_free_sp:
        sp->free(sp);
-       fcport->flags &= ~FCF_ASYNC_SENT;
 done:
        return rval;
 }
index 37aad8d..77e54e7 100644 (file)
@@ -1119,8 +1119,8 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport)
 
 done_free_sp:
        sp->free(sp);
-       fcport->flags &= ~FCF_ASYNC_SENT;
 done:
+       fcport->flags &= ~(FCF_ASYNC_ACTIVE | FCF_ASYNC_SENT);
        return rval;
 }
 
@@ -1354,6 +1354,7 @@ done_free_sp:
        sp->free(sp);
        fcport->flags &= ~FCF_ASYNC_SENT;
 done:
+       fcport->flags &= ~FCF_ASYNC_ACTIVE;
        qla24xx_post_gpdb_work(vha, fcport, opt);
        return rval;
 }
index 3ee080a..47bf60a 100644 (file)
@@ -2924,6 +2924,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
        if (!sp) {
                ql_log(ql_log_info, vha, 0x70e6,
                 "SRB allocation failed\n");
+               fcport->flags &= ~FCF_ASYNC_ACTIVE;
                return -ENOMEM;
        }
 
@@ -3001,7 +3002,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
        }
 
 out:
-       fcport->flags &= ~(FCF_ASYNC_SENT);
+       fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
        qla2x00_els_dcmd2_free(vha, &elsio->u.els_plogi);
        sp->free(sp);
 done: