[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