summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Quadros <rogerq@ti.com>2013-11-11 16:56:37 +0200
committerTom Rini <trini@ti.com>2013-12-04 08:12:08 -0500
commitd73763a4fbc741b3faee43d0a668dd220a81d772 (patch)
tree62299422f9cbbb836e722e0bb7a156e3f31a798d
parent54d022e76c42d824315e28ea06c89c2452f98861 (diff)
downloadu-boot-imx-d73763a4fbc741b3faee43d0a668dd220a81d772.zip
u-boot-imx-d73763a4fbc741b3faee43d0a668dd220a81d772.tar.gz
u-boot-imx-d73763a4fbc741b3faee43d0a668dd220a81d772.tar.bz2
ahci: Error out with message on malloc() failure
If malloc() fails, we don't want to continue in ahci_init() and ahci_init_one(). Also print a more informative error message on malloc() failures. CC: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Roger Quadros <rogerq@ti.com>
-rw-r--r--drivers/block/ahci.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 0daad36..e24d634 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -379,6 +379,11 @@ static int ahci_init_one(pci_dev_t pdev)
int rc;
probe_ent = malloc(sizeof(struct ahci_probe_ent));
+ if (!probe_ent) {
+ printf("%s: No memory for probe_ent\n", __func__);
+ return -ENOMEM;
+ }
+
memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
probe_ent->dev = pdev;
@@ -503,7 +508,7 @@ static int ahci_port_start(u8 port)
mem = (u32) malloc(AHCI_PORT_PRIV_DMA_SZ + 2048);
if (!mem) {
free(pp);
- printf("No mem for table!\n");
+ printf("%s: No mem for table!\n", __func__);
return -ENOMEM;
}
@@ -638,8 +643,10 @@ static int ata_scsiop_inquiry(ccb *pccb)
/* Read id from sata */
port = pccb->target;
tmpid = malloc(ATA_ID_WORDS * 2);
- if (!tmpid)
+ if (!tmpid) {
+ printf("%s: No memory for tmpid\n", __func__);
return -ENOMEM;
+ }
if (ahci_device_data_io(port, (u8 *) &fis, sizeof(fis), (u8 *)tmpid,
ATA_ID_WORDS * 2, 0)) {
@@ -889,6 +896,11 @@ int ahci_init(u32 base)
u32 linkmap;
probe_ent = malloc(sizeof(struct ahci_probe_ent));
+ if (!probe_ent) {
+ printf("%s: No memory for probe_ent\n", __func__);
+ return -ENOMEM;
+ }
+
memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
probe_ent->host_flags = ATA_FLAG_SATA