|
@@ -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;
|
|
|
|