iio: ms65611_core: Fixes dereferencing regulator pointer
PATCH 1/1 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.
--- drivers/iio/pressure/ms5611_core.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
drivers/iio/pressure/ms5611_core.c +8 -11
@@ -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);
Signature · 1 line
2.10.1
Jonathan Cameron
maintainerQuoted 11 lines · Crt Mori
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
-ENODEVerror, 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 <[email protected]>Suggested-by Lars-Peter Clausen <[email protected]>Signed-off-by Crt Mori <[email protected]>
Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.
Thanks,
Jonathan
Quoted 35 lines
--- drivers/iio/pressure/ms5611_core.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)drivers/iio/pressure/ms5611_core.c +8
-11@@ -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);