diff options
author | Axel Lin <axel.lin@ingics.com> | 2012-12-25 10:06:20 +0800 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-01-08 11:05:26 +0000 |
commit | a1a41ab4e92a42d380286a6aadb1026a2b352801 (patch) | |
tree | 615012dc8f0b2b6b0cc9f98744df876e2120d75b /drivers/regulator | |
parent | b59320cc5a5e6ceaa17f0895ffbe0711ebad7adf (diff) | |
download | op-kernel-dev-a1a41ab4e92a42d380286a6aadb1026a2b352801.zip op-kernel-dev-a1a41ab4e92a42d380286a6aadb1026a2b352801.tar.gz |
regulator: lp8755: Fix lp8755_regulator_init unwind code
It's safe to pass NULL argument to regulator_unregister(), so we can remove
the NULL checking before calling regulator_unregister().
However pass a ERR_PTR to regulator_unregister() is wrong, so we need to
explicitly set "pchip->rdev[buck_num] = NULL" before goto err_buck.
This patch also includes below cleanups:
Show correct regulator id in dev_err.
Remove __devexit_p.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/lp8755.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/regulator/lp8755.c b/drivers/regulator/lp8755.c index dbc4d12..06a82e2 100644 --- a/drivers/regulator/lp8755.c +++ b/drivers/regulator/lp8755.c @@ -358,7 +358,9 @@ static int lp8755_regulator_init(struct lp8755_chip *pchip) regulator_register(&lp8755_regulators[buck_num], &rconfig); if (IS_ERR(pchip->rdev[buck_num])) { ret = PTR_ERR(pchip->rdev[buck_num]); - dev_err(pchip->dev, "regulator init failed: buck 0\n"); + pchip->rdev[buck_num] = NULL; + dev_err(pchip->dev, "regulator init failed: buck %d\n", + buck_num); goto err_buck; } } @@ -367,8 +369,7 @@ static int lp8755_regulator_init(struct lp8755_chip *pchip) err_buck: for (icnt = 0; icnt < LP8755_BUCK_MAX; icnt++) - if (pchip->rdev[icnt] != NULL) - regulator_unregister(pchip->rdev[icnt]); + regulator_unregister(pchip->rdev[icnt]); return ret; } @@ -557,7 +558,7 @@ static struct i2c_driver lp8755_i2c_driver = { .name = LP8755_NAME, }, .probe = lp8755_probe, - .remove = __devexit_p(lp8755_remove), + .remove = lp8755_remove, .id_table = lp8755_id, }; |