diff options
author | Roger Quadros <rogerq@ti.com> | 2013-11-11 16:56:37 +0200 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-12-04 08:12:08 -0500 |
commit | d73763a4fbc741b3faee43d0a668dd220a81d772 (patch) | |
tree | 62299422f9cbbb836e722e0bb7a156e3f31a798d /drivers/block/ahci.c | |
parent | 54d022e76c42d824315e28ea06c89c2452f98861 (diff) | |
download | u-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>
Diffstat (limited to 'drivers/block/ahci.c')
-rw-r--r-- | drivers/block/ahci.c | 16 |
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 |