From 929980ab1b90b5a5c93db9b9b7d58cc6e93049c8 Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Tue, 24 Aug 2010 13:47:22 +0800 Subject: mfd: Fix tps6586x_add_subdevs error path 1. return -ENOMEM if platform_device_alloc() fail. 2. call platform_device_put() if platform_device_add() fail. Signed-off-by: Axel Lin Acked-by: Mike Rapoport Signed-off-by: Samuel Ortiz --- drivers/mfd/tps6586x.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'drivers/mfd/tps6586x.c') diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c index bc6587194de9..2f9336c3710c 100644 --- a/drivers/mfd/tps6586x.c +++ b/drivers/mfd/tps6586x.c @@ -273,13 +273,19 @@ static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x, subdev = &pdata->subdevs[i]; pdev = platform_device_alloc(subdev->name, subdev->id); + if (!pdev) { + ret = -ENOMEM; + goto failed; + } pdev->dev.parent = tps6586x->dev; pdev->dev.platform_data = subdev->platform_data; ret = platform_device_add(pdev); - if (ret) + if (ret) { + platform_device_put(pdev); goto failed; + } } return 0; -- cgit v1.2.3-59-g8ed1b