Message ID | 20190704113800.3299636-1-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iio: adc: gyroadc: fix uninitialized return code | expand |
Hi Arnd, On Thu, Jul 4, 2019 at 1:38 PM Arnd Bergmann <arnd@arndb.de> wrote: > gcc-9 complains about a blatant uninitialized variable use that > all earlier compiler versions missed: > > drivers/iio/adc/rcar-gyroadc.c:510:5: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] Actually gcc-4.1 warned about that one too ;-) So either I must have missed that warning when it appeared first, or I must have concluded wrongly that it was a false positive. Sorry for that... > Return -EINVAL instead here. > > Cc: stable@vger.kernel.org > Fixes: 059c53b32329 ("iio: adc: Add Renesas GyroADC driver") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert
On Thu, Jul 04, 2019 at 01:37:47PM +0200, Arnd Bergmann wrote: > gcc-9 complains about a blatant uninitialized variable use that > all earlier compiler versions missed: > > drivers/iio/adc/rcar-gyroadc.c:510:5: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] > > Return -EINVAL instead here. > > Cc: stable@vger.kernel.org > Fixes: 059c53b32329 ("iio: adc: Add Renesas GyroADC driver") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> This is correct but missing that the above 'return ret' is broken, too. ret is initialized but 0 in that case. And maybe we can use something else than -EINVAL for this case? I am on the go right now, I will look for a suggestion later.
Hi Wolfram, On Thu, Jul 4, 2019 at 2:08 PM Wolfram Sang <wsa@the-dreams.de> wrote: > On Thu, Jul 04, 2019 at 01:37:47PM +0200, Arnd Bergmann wrote: > > gcc-9 complains about a blatant uninitialized variable use that > > all earlier compiler versions missed: > > > > drivers/iio/adc/rcar-gyroadc.c:510:5: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] > > > > Return -EINVAL instead here. > > > > Cc: stable@vger.kernel.org > > Fixes: 059c53b32329 ("iio: adc: Add Renesas GyroADC driver") > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > This is correct but missing that the above 'return ret' is broken, too. > ret is initialized but 0 in that case. Nice catch! Oh well, given enough eyeballs, ... > And maybe we can use something else than -EINVAL for this case? I am on > the go right now, I will look for a suggestion later. -EINVAL is correct here (and in the above case, too), IMHO. Gr{oetje,eeting}s, Geert
On 7/4/19 2:10 PM, Geert Uytterhoeven wrote: > Hi Wolfram, > > On Thu, Jul 4, 2019 at 2:08 PM Wolfram Sang <wsa@the-dreams.de> wrote: >> On Thu, Jul 04, 2019 at 01:37:47PM +0200, Arnd Bergmann wrote: >>> gcc-9 complains about a blatant uninitialized variable use that >>> all earlier compiler versions missed: >>> >>> drivers/iio/adc/rcar-gyroadc.c:510:5: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] >>> >>> Return -EINVAL instead here. >>> >>> Cc: stable@vger.kernel.org >>> Fixes: 059c53b32329 ("iio: adc: Add Renesas GyroADC driver") >>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >> >> This is correct but missing that the above 'return ret' is broken, too. >> ret is initialized but 0 in that case. > > Nice catch! Oh well, given enough eyeballs, ... I don't think ret is initialized, reg is, not ret . >> And maybe we can use something else than -EINVAL for this case? I am on >> the go right now, I will look for a suggestion later. > > -EINVAL is correct here (and in the above case, too), IMHO. Yep, -EINVAL is fine.
> >> This is correct but missing that the above 'return ret' is broken, too. > >> ret is initialized but 0 in that case. > > > > Nice catch! Oh well, given enough eyeballs, ... > > I don't think ret is initialized, reg is, not ret . It is initialized for the broken 'return ret' *above* the one which gets rightfully fixed in this patch.
On Thu, 4 Jul 2019 21:55:58 +0200 Wolfram Sang <wsa@the-dreams.de> wrote: > > >> This is correct but missing that the above 'return ret' is broken, too. > > >> ret is initialized but 0 in that case. > > > > > > Nice catch! Oh well, given enough eyeballs, ... > > > > I don't think ret is initialized, reg is, not ret . > > It is initialized for the broken 'return ret' *above* the one which gets > rightfully fixed in this patch. > Agreed, 2 broken cases and this is only fixing the second one. I'm expecting a v2 of this patch which fixes them both, so won't apply this v1. Thanks, Jonathan
diff --git a/drivers/iio/adc/rcar-gyroadc.c b/drivers/iio/adc/rcar-gyroadc.c index 2d685730f867..aec73cc43e23 100644 --- a/drivers/iio/adc/rcar-gyroadc.c +++ b/drivers/iio/adc/rcar-gyroadc.c @@ -391,7 +391,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev) dev_err(dev, "Channel %i uses different ADC mode than the rest.\n", reg); - return ret; + return -EINVAL; } /* Channel is valid, grab the regulator. */
gcc-9 complains about a blatant uninitialized variable use that all earlier compiler versions missed: drivers/iio/adc/rcar-gyroadc.c:510:5: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] Return -EINVAL instead here. Cc: stable@vger.kernel.org Fixes: 059c53b32329 ("iio: adc: Add Renesas GyroADC driver") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/iio/adc/rcar-gyroadc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)