summaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>2015-09-02 12:44:06 +0200
committerMark Brown <broonie@kernel.org>2015-09-02 14:19:04 +0200
commit9f8df6adf6c53abfa10e243cb289c34eb18ec581 (patch)
treeedf72419b52174ef970a8c0925c54560eee881d7 /drivers/regulator
parentMerge remote-tracking branch 'regulator/topic/tps6586x' into regulator-next (diff)
downloadlinux-9f8df6adf6c53abfa10e243cb289c34eb18ec581.tar.xz
linux-9f8df6adf6c53abfa10e243cb289c34eb18ec581.zip
regulator: core: fix possible NULL dereference
We were checking rdev->supply for NULL after dereferencing it. Lets check for rdev->supply along with _regulator_is_enabled() and call regulator_enable() only if rdev->supply is not NULL. Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/core.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index de9f272a0faf..7150ff6ef46b 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1422,11 +1422,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev)
return ret;
/* Cascade always-on state to supply */
- if (_regulator_is_enabled(rdev)) {
+ if (_regulator_is_enabled(rdev) && rdev->supply) {
ret = regulator_enable(rdev->supply);
if (ret < 0) {
- if (rdev->supply)
- _regulator_put(rdev->supply);
+ _regulator_put(rdev->supply);
return ret;
}
}