Thread (1 message) 1 message, 1 author, 2016-03-08

Re: [PATCH v5 1/1] Fixes: 3145229f9191 ("iio:pressure:ms5611: power regulator support")

From: Daniel Baluta <hidden>
Date: 2016-03-08 21:16:20
Also in: linux-iio

On Tue, Mar 8, 2016 at 8:00 PM, Gregor Boirie [off-list ref] wrote:
When not compiled-in, regulator layer will return a NULL pointer when
trying to get a reference to any regulator using devm_regulator_get().  As
IS_ERR() does not consider this an error, the ms5611 probing operation will
try to enable a NULL regulator, which will invariably cause a kernel
crash.
This patch fixes this situation by using devm_regulator_get_optional()
instead of devm_regulator_get().

Signed-off-by: Gregor Boirie <gregor.boirie-ITF29qwbsa/QT0dZR+AlfA@public.gmane.org>
$Subject should be here. And the commit subject should be something
more appropriate like:

iio: pressure: ms5611: Fix crash when ...

quoted hunk
---
 drivers/iio/pressure/ms5611_core.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c
index 37dbc04..a2a871b 100644
--- a/drivers/iio/pressure/ms5611_core.c
+++ b/drivers/iio/pressure/ms5611_core.c
@@ -387,8 +387,8 @@ static const struct iio_info ms5611_info = {
 static int ms5611_init(struct iio_dev *indio_dev)
 {
        int ret;
-       struct regulator *vdd = devm_regulator_get(indio_dev->dev.parent,
-                                                  "vdd");
+       struct regulator *vdd =
+               devm_regulator_get_optional(indio_dev->dev.parent, "vdd");

        /* Enable attached regulator if any. */
        if (!IS_ERR(vdd)) {
@@ -398,6 +398,10 @@ static int ms5611_init(struct iio_dev *indio_dev)
                                "failed to enable Vdd supply: %d\n", ret);
                        return ret;
                }
+       } else {
+               ret = PTR_ERR(vdd);
+               if (ret != -ENODEV)
+                       return ret;
        }

        ret = ms5611_reset(indio_dev);
--
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help