Skip to content

Commit 79c932c

Browse files
igawmartinkpetersen
authored andcommitted
scsi: qedf: Do not put host in qedf_vport_create() unconditionally
Do not drop reference count on vn_port->host in qedf_vport_create() unconditionally. Instead drop the reference count in qedf_vport_destroy(). Link: https://lore.kernel.org/r/20210521143440.84816-1-dwagner@suse.de Reported-by: Javed Hasan <jhasan@marvell.com> Signed-off-by: Daniel Wagner <dwagner@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 696770e commit 79c932c

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

drivers/scsi/qedf/qedf_main.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,22 +1827,20 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled)
18271827
fcoe_wwn_to_str(vport->port_name, buf, sizeof(buf));
18281828
QEDF_WARN(&(base_qedf->dbg_ctx), "Failed to create vport, "
18291829
"WWPN (0x%s) already exists.\n", buf);
1830-
goto err1;
1830+
return rc;
18311831
}
18321832

18331833
if (atomic_read(&base_qedf->link_state) != QEDF_LINK_UP) {
18341834
QEDF_WARN(&(base_qedf->dbg_ctx), "Cannot create vport "
18351835
"because link is not up.\n");
1836-
rc = -EIO;
1837-
goto err1;
1836+
return -EIO;
18381837
}
18391838

18401839
vn_port = libfc_vport_create(vport, sizeof(struct qedf_ctx));
18411840
if (!vn_port) {
18421841
QEDF_WARN(&(base_qedf->dbg_ctx), "Could not create lport "
18431842
"for vport.\n");
1844-
rc = -ENOMEM;
1845-
goto err1;
1843+
return -ENOMEM;
18461844
}
18471845

18481846
fcoe_wwn_to_str(vport->port_name, buf, sizeof(buf));
@@ -1866,7 +1864,7 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled)
18661864
if (rc) {
18671865
QEDF_ERR(&(base_qedf->dbg_ctx), "Could not allocate memory "
18681866
"for lport stats.\n");
1869-
goto err2;
1867+
goto err;
18701868
}
18711869

18721870
fc_set_wwnn(vn_port, vport->node_name);
@@ -1884,7 +1882,7 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled)
18841882
if (rc) {
18851883
QEDF_WARN(&base_qedf->dbg_ctx,
18861884
"Error adding Scsi_Host rc=0x%x.\n", rc);
1887-
goto err2;
1885+
goto err;
18881886
}
18891887

18901888
/* Set default dev_loss_tmo based on module parameter */
@@ -1925,9 +1923,10 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled)
19251923
vport_qedf->dbg_ctx.host_no = vn_port->host->host_no;
19261924
vport_qedf->dbg_ctx.pdev = base_qedf->pdev;
19271925

1928-
err2:
1926+
return 0;
1927+
1928+
err:
19291929
scsi_host_put(vn_port->host);
1930-
err1:
19311930
return rc;
19321931
}
19331932

@@ -1968,8 +1967,7 @@ static int qedf_vport_destroy(struct fc_vport *vport)
19681967
fc_lport_free_stats(vn_port);
19691968

19701969
/* Release Scsi_Host */
1971-
if (vn_port->host)
1972-
scsi_host_put(vn_port->host);
1970+
scsi_host_put(vn_port->host);
19731971

19741972
out:
19751973
return 0;

0 commit comments

Comments
 (0)