]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: pm80xx: Free allocated tags after failure
authorFrancisco Gutierrez <frankramirez@google.com>
Tue, 17 Jun 2025 21:04:43 +0000 (21:04 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 20 Jun 2025 02:57:22 +0000 (22:57 -0400)
This change frees resources after an error is detected.

Signed-off-by: Francisco Gutierrez <frankramirez@google.com>
Link: https://lore.kernel.org/r/20250617210443.989058-1-frankramirez@google.com
Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/pm8001/pm80xx_hwi.c

index 5b373c53c0369e7a83e057e316da475551d46fb6..c4074f062d93111f64ae2acdc8a916e27b034636 100644 (file)
@@ -4677,8 +4677,12 @@ pm80xx_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id)
                &pm8001_ha->phy[phy_id].dev_sas_addr, SAS_ADDR_SIZE);
        payload.sas_identify.phy_id = phy_id;
 
-       return pm8001_mpi_build_cmd(pm8001_ha, 0, opcode, &payload,
+       ret = pm8001_mpi_build_cmd(pm8001_ha, 0, opcode, &payload,
                                    sizeof(payload), 0);
+       if (ret < 0)
+               pm8001_tag_free(pm8001_ha, tag);
+
+       return ret;
 }
 
 /**
@@ -4704,8 +4708,12 @@ static int pm80xx_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha,
        payload.tag = cpu_to_le32(tag);
        payload.phy_id = cpu_to_le32(phy_id);
 
-       return pm8001_mpi_build_cmd(pm8001_ha, 0, opcode, &payload,
+       ret = pm8001_mpi_build_cmd(pm8001_ha, 0, opcode, &payload,
                                    sizeof(payload), 0);
+       if (ret < 0)
+               pm8001_tag_free(pm8001_ha, tag);
+
+       return ret;
 }
 
 /*