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 <axel.lin@gmail.com> Acked-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
09ff21e0f6
commit
929980ab1b
|
@ -273,14 +273,20 @@ static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
|
||||||
subdev = &pdata->subdevs[i];
|
subdev = &pdata->subdevs[i];
|
||||||
|
|
||||||
pdev = platform_device_alloc(subdev->name, subdev->id);
|
pdev = platform_device_alloc(subdev->name, subdev->id);
|
||||||
|
if (!pdev) {
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
pdev->dev.parent = tps6586x->dev;
|
pdev->dev.parent = tps6586x->dev;
|
||||||
pdev->dev.platform_data = subdev->platform_data;
|
pdev->dev.platform_data = subdev->platform_data;
|
||||||
|
|
||||||
ret = platform_device_add(pdev);
|
ret = platform_device_add(pdev);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
platform_device_put(pdev);
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
|
|
Loading…
Reference in New Issue