2016-10-25 15:57:17

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] staging: iio: cdc/ad7746: fix missing return value

As found by "gcc -Wmaybe-uninitialized", the latest change to the
driver lacked an initalization for the return code in one of the
added cases:

drivers/staging/iio/cdc/ad7746.c: In function ‘ad7746_read_raw’:
drivers/staging/iio/cdc/ad7746.c:655:2: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

This sets it to IIO_VAL_INT, which I think is what we want here.

Fixes: 2296c0623eb7 ("staging: iio: cdc: ad7746: implement IIO_CHAN_INFO_SAMP_FREQ")
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/staging/iio/cdc/ad7746.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c
index f41251ceeacd..a5828f9aa437 100644
--- a/drivers/staging/iio/cdc/ad7746.c
+++ b/drivers/staging/iio/cdc/ad7746.c
@@ -642,6 +642,7 @@ static int ad7746_read_raw(struct iio_dev *indio_dev,
case IIO_VOLTAGE:
*val = ad7746_vt_filter_rate_table[
(chip->config >> 6) & 0x3][0];
+ ret = IIO_VAL_INT;
break;
default:
ret = -EINVAL;
--
2.9.0


2016-10-25 16:27:28

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] staging: iio: cdc/ad7746: fix missing return value

On 25/10/16 16:56, Arnd Bergmann wrote:
> As found by "gcc -Wmaybe-uninitialized", the latest change to the
> driver lacked an initalization for the return code in one of the
> added cases:
>
> drivers/staging/iio/cdc/ad7746.c: In function ‘ad7746_read_raw’:
> drivers/staging/iio/cdc/ad7746.c:655:2: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>
> This sets it to IIO_VAL_INT, which I think is what we want here.
>
> Fixes: 2296c0623eb7 ("staging: iio: cdc: ad7746: implement IIO_CHAN_INFO_SAMP_FREQ")
> Signed-off-by: Arnd Bergmann <[email protected]>
Gah, not a good bit of reviewing from me. Should have caught that one. Thanks Arnd.

Applied to the togreg branch of iio.git - initially pushed out as testing for the
autobuilders to play with it. Will probably be a little while before I send
another pull to Greg (most likely the weekend)

Thanks again,

Jonathan
> ---
> drivers/staging/iio/cdc/ad7746.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c
> index f41251ceeacd..a5828f9aa437 100644
> --- a/drivers/staging/iio/cdc/ad7746.c
> +++ b/drivers/staging/iio/cdc/ad7746.c
> @@ -642,6 +642,7 @@ static int ad7746_read_raw(struct iio_dev *indio_dev,
> case IIO_VOLTAGE:
> *val = ad7746_vt_filter_rate_table[
> (chip->config >> 6) & 0x3][0];
> + ret = IIO_VAL_INT;
> break;
> default:
> ret = -EINVAL;
>

2016-10-26 09:48:59

by Eva Rachel Retuya

[permalink] [raw]
Subject: Re: [PATCH] staging: iio: cdc/ad7746: fix missing return value

On Tue, Oct 25, 2016 at 05:27:07PM +0100, Jonathan Cameron wrote:
> On 25/10/16 16:56, Arnd Bergmann wrote:
> > As found by "gcc -Wmaybe-uninitialized", the latest change to the
> > driver lacked an initalization for the return code in one of the
> > added cases:
> >
> > drivers/staging/iio/cdc/ad7746.c: In function ‘ad7746_read_raw’:
> > drivers/staging/iio/cdc/ad7746.c:655:2: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >
> > This sets it to IIO_VAL_INT, which I think is what we want here.
> >
> > Fixes: 2296c0623eb7 ("staging: iio: cdc: ad7746: implement IIO_CHAN_INFO_SAMP_FREQ")
> > Signed-off-by: Arnd Bergmann <[email protected]>
> Gah, not a good bit of reviewing from me. Should have caught that one. Thanks Arnd.
>

It's not your fault. My apologies. v1 of this patch is OK, I just happen to
encounter a problem and had to rework the v2 on another branch resulting
to this blunder.

I will be extra careful next time.

Eva

> Applied to the togreg branch of iio.git - initially pushed out as testing for the
> autobuilders to play with it. Will probably be a little while before I send
> another pull to Greg (most likely the weekend)
>
> Thanks again,
>
> Jonathan
> > ---
> > drivers/staging/iio/cdc/ad7746.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/staging/iio/cdc/ad7746.c
> > index f41251ceeacd..a5828f9aa437 100644
> > --- a/drivers/staging/iio/cdc/ad7746.c
> > +++ b/drivers/staging/iio/cdc/ad7746.c
> > @@ -642,6 +642,7 @@ static int ad7746_read_raw(struct iio_dev *indio_dev,
> > case IIO_VOLTAGE:
> > *val = ad7746_vt_filter_rate_table[
> > (chip->config >> 6) & 0x3][0];
> > + ret = IIO_VAL_INT;
> > break;
> > default:
> > ret = -EINVAL;
> >
>