Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1409188 > unrolled thread

[PATCH] iio: as3935: improve error reporting in as3935_event_work

Started byArnd Bergmann <arnd@arndb.de>
First post2016-05-30 17:00 +0200
Last post2016-05-30 19:40 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] iio: as3935: improve error reporting in as3935_event_work Arnd Bergmann <arnd@arndb.de> - 2016-05-30 17:00 +0200
    Re: [PATCH] iio: as3935: improve error reporting in as3935_event_work Matt Ranostay <mranostay@gmail.com> - 2016-05-30 19:40 +0200

#1409188 — [PATCH] iio: as3935: improve error reporting in as3935_event_work

FromArnd Bergmann <arnd@arndb.de>
Date2016-05-30 17:00 +0200
Subject[PATCH] iio: as3935: improve error reporting in as3935_event_work
Message-ID<rEwPD-5wp-1@gated-at.bofh.it>
gcc warns about a potentially uninitialized variable use
in as3935_event_work:

drivers/iio/proximity/as3935.c: In function ‘as3935_event_work’:
drivers/iio/proximity/as3935.c:231:6: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

This case specifically happens when spi_w8r8() fails with a
negative return code. We check all other users of this function
except this one.

As the error is rather unlikely to happen after the device
has already been initialized, this just adds a dev_warn().
Another warning already existst in the same function, but is
missing a trailing '\n' character, so I'm fixing that too.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/iio/proximity/as3935.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
index f4d29d5dbd5f..b49e3ab5730a 100644
--- a/drivers/iio/proximity/as3935.c
+++ b/drivers/iio/proximity/as3935.c
@@ -224,10 +224,16 @@ static void as3935_event_work(struct work_struct *work)
 {
 	struct as3935_state *st;
 	int val;
+	int ret;
 
 	st = container_of(work, struct as3935_state, work.work);
 
-	as3935_read(st, AS3935_INT, &val);
+	ret = as3935_read(st, AS3935_INT, &val);
+	if (ret) {
+		dev_warn(&st->spi->dev, "read error\n");
+		return;
+	}
+
 	val &= AS3935_INT_MASK;
 
 	switch (val) {
@@ -235,7 +241,7 @@ static void as3935_event_work(struct work_struct *work)
 		iio_trigger_poll(st->trig);
 		break;
 	case AS3935_NOISE_INT:
-		dev_warn(&st->spi->dev, "noise level is too high");
+		dev_warn(&st->spi->dev, "noise level is too high\n");
 		break;
 	}
 }
-- 
2.7.0

[toc] | [next] | [standalone]


#1409299

FromMatt Ranostay <mranostay@gmail.com>
Date2016-05-30 19:40 +0200
Message-ID<rEzkt-7i2-5@gated-at.bofh.it>
In reply to#1409188
Reviewed-by: Matt Ranostay <mranostay@gmail.com>

On Mon, May 30, 2016 at 7:52 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> gcc warns about a potentially uninitialized variable use
> in as3935_event_work:
>
> drivers/iio/proximity/as3935.c: In function ‘as3935_event_work’:
> drivers/iio/proximity/as3935.c:231:6: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>
> This case specifically happens when spi_w8r8() fails with a
> negative return code. We check all other users of this function
> except this one.
>
> As the error is rather unlikely to happen after the device
> has already been initialized, this just adds a dev_warn().
> Another warning already existst in the same function, but is
> missing a trailing '\n' character, so I'm fixing that too.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/iio/proximity/as3935.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
> index f4d29d5dbd5f..b49e3ab5730a 100644
> --- a/drivers/iio/proximity/as3935.c
> +++ b/drivers/iio/proximity/as3935.c
> @@ -224,10 +224,16 @@ static void as3935_event_work(struct work_struct *work)
>  {
>         struct as3935_state *st;
>         int val;
> +       int ret;
>
>         st = container_of(work, struct as3935_state, work.work);
>
> -       as3935_read(st, AS3935_INT, &val);
> +       ret = as3935_read(st, AS3935_INT, &val);
> +       if (ret) {
> +               dev_warn(&st->spi->dev, "read error\n");
> +               return;
> +       }
> +
>         val &= AS3935_INT_MASK;
>
>         switch (val) {
> @@ -235,7 +241,7 @@ static void as3935_event_work(struct work_struct *work)
>                 iio_trigger_poll(st->trig);
>                 break;
>         case AS3935_NOISE_INT:
> -               dev_warn(&st->spi->dev, "noise level is too high");
> +               dev_warn(&st->spi->dev, "noise level is too high\n");
>                 break;
>         }
>  }
> --
> 2.7.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web