powerpc/82xx: kmalloc failure ignored in ep8248e_mdio_probe()
authorRoel Kluin <roel.kluin@gmail.com>
Wed, 9 Sep 2009 14:49:57 +0000 (16:49 +0200)
committerKumar Gala <galak@kernel.crashing.org>
Thu, 5 Nov 2009 13:18:00 +0000 (07:18 -0600)
Prevent NULL dereference if kmalloc() fails. Also clean up if
of_mdiobus_register() returns an error.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/platforms/82xx/ep8248e.c

index 51fcae4..f9aee18 100644 (file)
@@ -132,12 +132,25 @@ static int __devinit ep8248e_mdio_probe(struct of_device *ofdev,
                return -ENOMEM;
 
        bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
+       if (bus->irq == NULL) {
+               ret = -ENOMEM;
+               goto err_free_bus;
+       }
 
        bus->name = "ep8248e-mdio-bitbang";
        bus->parent = &ofdev->dev;
        snprintf(bus->id, MII_BUS_ID_SIZE, "%x", res.start);
 
-       return of_mdiobus_register(bus, ofdev->node);
+       ret = of_mdiobus_register(bus, ofdev->node);
+       if (ret)
+               goto err_free_irq;
+
+       return 0;
+err_free_irq:
+       kfree(bus->irq);
+err_free_bus:
+       free_mdio_bitbang(bus);
+       return ret;
 }
 
 static int ep8248e_mdio_remove(struct of_device *ofdev)