aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorDevendra Naga <develkernel412222@gmail.com>2012-07-29 13:46:55 -0400
committerAnton Vorontsov <anton.vorontsov@linaro.org>2012-08-22 22:14:09 -0400
commit6297b5e54b5511d4e72e8d5fc3b139650adc74d8 (patch)
tree1180e16365478b00a4c9f26ff0c39297e16a789a /drivers/power
parentf77609959ade7378eed8b03df4c248f6d44c7e15 (diff)
lp8727_charger: Unregister power supply at error path of lp8727_register_psy
if usb power supply registration fails, we wont unregister the ac power supply if battery power supply registration fails, we wont unregister the usb, and ac supply, take care of those things and also no need of goto -err_mem: at the fail case of kzalloc simply can have return -ENOMEM Signed-off-by: Devendra Naga <develkernel412222@gmail.com> Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/lp8727_charger.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/power/lp8727_charger.c b/drivers/power/lp8727_charger.c
index 6a364f4798f7..4e37b269ac95 100644
--- a/drivers/power/lp8727_charger.c
+++ b/drivers/power/lp8727_charger.c
@@ -362,7 +362,7 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
362 362
363 psy = kzalloc(sizeof(*psy), GFP_KERNEL); 363 psy = kzalloc(sizeof(*psy), GFP_KERNEL);
364 if (!psy) 364 if (!psy)
365 goto err_mem; 365 return -ENOMEM;
366 366
367 pchg->psy = psy; 367 pchg->psy = psy;
368 368
@@ -375,7 +375,7 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
375 psy->ac.num_supplicants = ARRAY_SIZE(battery_supplied_to); 375 psy->ac.num_supplicants = ARRAY_SIZE(battery_supplied_to);
376 376
377 if (power_supply_register(pchg->dev, &psy->ac)) 377 if (power_supply_register(pchg->dev, &psy->ac))
378 goto err_psy; 378 goto err_psy_ac;
379 379
380 psy->usb.name = "usb"; 380 psy->usb.name = "usb";
381 psy->usb.type = POWER_SUPPLY_TYPE_USB; 381 psy->usb.type = POWER_SUPPLY_TYPE_USB;
@@ -386,7 +386,7 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
386 psy->usb.num_supplicants = ARRAY_SIZE(battery_supplied_to); 386 psy->usb.num_supplicants = ARRAY_SIZE(battery_supplied_to);
387 387
388 if (power_supply_register(pchg->dev, &psy->usb)) 388 if (power_supply_register(pchg->dev, &psy->usb))
389 goto err_psy; 389 goto err_psy_usb;
390 390
391 psy->batt.name = "main_batt"; 391 psy->batt.name = "main_batt";
392 psy->batt.type = POWER_SUPPLY_TYPE_BATTERY; 392 psy->batt.type = POWER_SUPPLY_TYPE_BATTERY;
@@ -396,13 +396,15 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
396 psy->batt.external_power_changed = lp8727_charger_changed; 396 psy->batt.external_power_changed = lp8727_charger_changed;
397 397
398 if (power_supply_register(pchg->dev, &psy->batt)) 398 if (power_supply_register(pchg->dev, &psy->batt))
399 goto err_psy; 399 goto err_psy_batt;
400 400
401 return 0; 401 return 0;
402 402
403err_mem: 403err_psy_batt:
404 return -ENOMEM; 404 power_supply_unregister(&psy->usb);
405err_psy: 405err_psy_usb:
406 power_supply_unregister(&psy->ac);
407err_psy_ac:
406 kfree(psy); 408 kfree(psy);
407 return -EPERM; 409 return -EPERM;
408} 410}