[coreboot-gerrit] New patch to review for coreboot: libpayload: ahci: avoid several memleaks when failing on init

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Wed Jan 4 21:50:53 CET 2017


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18033

-gerrit

commit 27333e5add4915724aa0ec53fa59f06b18d8e588
Author: Patrick Georgi <pgeorgi at chromium.org>
Date:   Wed Jan 4 21:47:19 2017 +0100

    libpayload: ahci: avoid several memleaks when failing on init
    
    Change-Id: If82a3c453dbd71470d06d2c77d54065b9206b0fd
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Found-by: Coverity Scan #1260719, #1260727, #1261090, #1261098
---
 payloads/libpayload/drivers/storage/ahci.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/payloads/libpayload/drivers/storage/ahci.c b/payloads/libpayload/drivers/storage/ahci.c
index 0e7fd7d..d1dd1fa 100644
--- a/payloads/libpayload/drivers/storage/ahci.c
+++ b/payloads/libpayload/drivers/storage/ahci.c
@@ -121,11 +121,11 @@ static int ahci_dev_init(hba_ctrl_t *const ctrl,
 
 	/* Set command list base and received FIS base. */
 	if (ahci_cmdengine_stop(port))
-		return 1;
+		goto _cleanup_ret;
 	port->cmdlist_base = virt_to_phys(cmdlist);
 	port->frameinfo_base = virt_to_phys(rcvd_fis);
 	if (ahci_cmdengine_start(port))
-		return 1;
+		goto _cleanup_ret;
 	/* Put port into active state. */
 	port->cmd_stat |= HBA_PxCMD_ICC_ACTIVE;
 
@@ -177,15 +177,15 @@ _cleanup_ret:
 	/* Clean up (not reached for initialized devices). */
 	if (dev)
 		free(dev);
+	if (rcvd_fis)
+		free((void *)rcvd_fis);
+	if (cmdtable)
+		free((void *)cmdtable);
+	if (cmdlist)
+		free((void *)cmdlist);
 	if (!ahci_cmdengine_stop(port)) {
 		port->cmdlist_base = 0;
 		port->frameinfo_base = 0;
-		if (rcvd_fis)
-			free((void *)rcvd_fis);
-		if (cmdtable)
-			free((void *)cmdtable);
-		if (cmdlist)
-			free((void *)cmdlist);
 	}
 	return ret;
 }



More information about the coreboot-gerrit mailing list