ahci: Error out with message on malloc() failure
authorRoger Quadros <rogerq@ti.com>
Mon, 11 Nov 2013 14:56:37 +0000 (16:56 +0200)
committerTom Rini <trini@ti.com>
Wed, 4 Dec 2013 13:12:08 +0000 (08:12 -0500)
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>
drivers/block/ahci.c

index 0daad36..e24d634 100644 (file)
@@ -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