summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Tee <justin.tee@broadcom.com>2026-02-13 00:30:02 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2026-02-24 21:06:52 +0300
commit6b0bcf4b6430688984fe1ee69fce7165a3e24b92 (patch)
treedc8899b06e5971c083c6cc1537e6d3a6ec90b65f
parentf6bfb8d149336661bb80e62980da9a45b920403c (diff)
downloadlinux-6b0bcf4b6430688984fe1ee69fce7165a3e24b92.tar.xz
scsi: lpfc: Cleanup error exit paths in lpfc_fdmi_cmd() and associated messages
Error labels in lpfc_fdmi_cmd() accidentally return success status and can potentially leak memory. Change error exit path status to return a non-zero value using a common exit path for failure cases. The error path also frees allocated memory and provides logging. Signed-off-by: Justin Tee <justin.tee@broadcom.com> Link: https://patch.msgid.link/20260212213008.149873-8-justintee8345@gmail.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/lpfc/lpfc_ct.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c
index d64f4acfcdae..c7853e7fe071 100644
--- a/drivers/scsi/lpfc/lpfc_ct.c
+++ b/drivers/scsi/lpfc/lpfc_ct.c
@@ -1,7 +1,7 @@
/*******************************************************************
* This file is part of the Emulex Linux Device Driver for *
* Fibre Channel Host Bus Adapters. *
- * Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
+ * Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
* EMULEX and SLI are trademarks of Emulex. *
@@ -2427,13 +2427,14 @@ lpfc_cmpl_ct_disc_fdmi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
/* CGN is only for the physical port, no vports */
if (lpfc_fdmi_cmd(vport, ndlp, cmd,
- LPFC_FDMI_VENDOR_ATTR_mi) == 0)
+ LPFC_FDMI_VENDOR_ATTR_mi) == 0) {
phba->link_flag |= LS_CT_VEN_RPA;
- lpfc_printf_log(phba, KERN_INFO,
+ lpfc_printf_log(phba, KERN_INFO,
LOG_DISCOVERY | LOG_ELS,
"6458 Send MI FDMI:%x Flag x%x\n",
phba->sli4_hba.pc_sli4_params.mi_ver,
phba->link_flag);
+ }
} else {
lpfc_printf_log(phba, KERN_INFO,
LOG_DISCOVERY | LOG_ELS,
@@ -3214,7 +3215,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
struct lpfc_iocbq *rspiocb);
if (!ndlp)
- return 0;
+ goto fdmi_cmd_exit;
cmpl = lpfc_cmpl_ct_disc_fdmi; /* called from discovery */
@@ -3320,7 +3321,7 @@ hba_out:
if (vport->port_type != LPFC_PHYSICAL_PORT) {
ndlp = lpfc_findnode_did(phba->pport, FDMI_DID);
if (!ndlp)
- return 0;
+ goto fdmi_cmd_free_rspvirt;
}
fallthrough;
case SLI_MGMT_RPA:
@@ -3396,7 +3397,7 @@ port_out:
if (vport->port_type != LPFC_PHYSICAL_PORT) {
ndlp = lpfc_findnode_did(phba->pport, FDMI_DID);
if (!ndlp)
- return 0;
+ goto fdmi_cmd_free_rspvirt;
}
fallthrough;
case SLI_MGMT_DPA: