RE: [jic23-iio:testing 149/150] drivers/iio/dac/ad5593r.c:87 ad5593r_gpio_read() error: uninitialized symbol 'val'.

From: Sa, Nuno
Date: Fri Sep 16 2022 - 03:12:05 EST


Hi Dan,

> From: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> Sent: Friday, September 16, 2022 8:56 AM
> To: kbuild@xxxxxxxxxxxx; Hennerich, Michael
> <Michael.Hennerich@xxxxxxxxxx>
> Cc: lkp@xxxxxxxxx; kbuild-all@xxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>; Sa, Nuno
> <Nuno.Sa@xxxxxxxxxx>
> Subject: [jic23-iio:testing 149/150] drivers/iio/dac/ad5593r.c:87
> ad5593r_gpio_read() error: uninitialized symbol 'val'.
>
> [External]
>
> tree:
> https://urldefense.com/v3/__https://git.kernel.org/pub/scm/linux/kernel/g
> it/jic23/iio.git__;!!A3Ni8CS0y2Y!94Jf_eIoy5zwbmsSRdWgugxbqkbgHFd0A88T
> z4SKRufGLX24YYSEzKlB13AXeYzsBWzd5HW-SqPpIzc8hvh-6w$ testing
> head: 62a6e699f4669b2c51f408273756f93b21c9f1a1
> commit: 53b6e3b2164c5807669fbf6b3df0e1494b4d03b8 [149/150] iio: dac:
> ad5593r: Fix i2c read protocol requirements
> config: x86_64-randconfig-m001
> compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
>
> smatch warnings:
> drivers/iio/dac/ad5593r.c:87 ad5593r_gpio_read() error: uninitialized symbol
> 'val'.
>
> vim +/val +87 drivers/iio/dac/ad5593r.c
>
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 79 static int
> ad5593r_gpio_read(struct ad5592r_state *st, u8 *value)
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 80 {
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 81 struct i2c_client *i2c =
> to_i2c_client(st->dev);
> 53b6e3b2164c580 Michael Hennerich 2022-09-13 82 u16 val;
> 53b6e3b2164c580 Michael Hennerich 2022-09-13 83 int ret;
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 84
> 53b6e3b2164c580 Michael Hennerich 2022-09-13 85 ret =
> ad5593r_read_word(i2c, AD5593R_MODE_GPIO_READBACK, &val);
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 86
> 56ca9db862bf3d7 Paul Cercueil 2016-04-05 @87 *value = (u8) val;
>
>
> In the original code the error checking prevented reading uninitialized
> variables. It's not really a problem, because ad5593r_read_word() can't
> actually fail but, you know? Technically the checker is correct.

Hmm, in theory, it can if one of the i2c functions (for some reason) return error.
Not sure how to handle this... Given this is still in the testing branch should I
just re-spin another version of the series? Jonathan?

- Nuno Sá