summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCrt Mori <cmo@melexis.com>2016-10-14 15:43:14 +0200
committerJonathan Cameron <jic23@kernel.org>2016-10-23 19:33:50 +0100
commit3f5def652f6609dd1981be8283de155f15a3df48 (patch)
treec2fc7040f4bf98db472585799c36fc6b9ea36ab5
parentd5d4602e040538b56e6fbedcc8542dce7e2352d3 (diff)
downloadlinux-3f5def652f6609dd1981be8283de155f15a3df48.tar.gz
linux-3f5def652f6609dd1981be8283de155f15a3df48.tar.bz2
linux-3f5def652f6609dd1981be8283de155f15a3df48.zip
iio: ms65611_core: Fixes dereferencing regulator pointer
Change in handling of the regulator description means that static checkers correctly assume we could be using dereferenced pointer to the regulator. In reality we will never get the -ENODEV error, as current behavior flow does not predict it, because: If the device tree or board file does not define suitable regulators for the component, it will be substituted by a dummy regulator, or, if regulators are disabled altogether, by stubs. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Suggested-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Crt Mori <cmo@melexis.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r--drivers/iio/pressure/ms5611_core.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c
index a74ed1f0c880..6bd53e702667 100644
--- a/drivers/iio/pressure/ms5611_core.c
+++ b/drivers/iio/pressure/ms5611_core.c
@@ -392,17 +392,14 @@ static int ms5611_init(struct iio_dev *indio_dev)
/* Enable attached regulator if any. */
st->vdd = devm_regulator_get(indio_dev->dev.parent, "vdd");
- if (!IS_ERR(st->vdd)) {
- ret = regulator_enable(st->vdd);
- if (ret) {
- dev_err(indio_dev->dev.parent,
- "failed to enable Vdd supply: %d\n", ret);
- return ret;
- }
- } else {
- ret = PTR_ERR(st->vdd);
- if (ret != -ENODEV)
- return ret;
+ if (IS_ERR(st->vdd))
+ return PTR_ERR(st->vdd);
+
+ ret = regulator_enable(st->vdd);
+ if (ret) {
+ dev_err(indio_dev->dev.parent,
+ "failed to enable Vdd supply: %d\n", ret);
+ return ret;
}
ret = ms5611_reset(indio_dev);