Hi Jonathan,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing
head:   448fea9496ae166a285858bf17eb5473eb77f4dc
commit: 53e5aaab4c850f99a9eb3144cc29eccea7570c7f [39/69] iio:cdc:ad7150: Move 
driver out of staging.
config: x86_64-randconfig-m001-20210405 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/iio/cdc/ad7150.c:321 ad7150_write_event_config() error: uninitialized 
symbol 'ret'.

vim +/ret +321 drivers/iio/cdc/ad7150.c

531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
232  static int ad7150_write_event_config(struct iio_dev *indio_dev,
c4f0ebd91467c7 drivers/staging/iio/cdc/ad7150.c Shraddha Barke     2015-12-29  
233                                   const struct iio_chan_spec *chan,
c4f0ebd91467c7 drivers/staging/iio/cdc/ad7150.c Shraddha Barke     2015-12-29  
234                                   enum iio_event_type type,
1489d629a481dc drivers/staging/iio/cdc/ad7150.c Lars-Peter Clausen 2013-10-07  
235                                   enum iio_event_direction dir, int state)
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
236  {
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
237      struct ad7150_chip_info *chip = iio_priv(indio_dev);
887b66527c6435 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
238      int ret;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
239  
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
240      /*
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
241       * There is only a single shared control and no on chip
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
242       * interrupt disables for the two interrupt lines.
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
243       * So, enabling will switch the events configured to enable
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
244       * whatever was most recently requested and if necessary enable_irq()
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
245       * the interrupt and any disable will disable_irq() for that
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
246       * channels interrupt.
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
247       */
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
248      if (!state) {
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
249              if ((chip->int_enabled[chan->channel]) &&
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
250                  (type == chip->type) && (dir == chip->dir)) {
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
251                      disable_irq(chip->interrupts[chan->channel]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
252                      chip->int_enabled[chan->channel] = false;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
253              }
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
254              return 0;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
255      }
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
256  
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
257      mutex_lock(&chip->state_lock);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
258      if ((type != chip->type) || (dir != chip->dir)) {

"ret" is not initialize on the false path.

887b66527c6435 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
259              int rising = (dir == IIO_EV_DIR_RISING);
887b66527c6435 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
260              u8 thresh_type, cfg, fixed;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
261  
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
262              /*
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
263               * Need to temporarily disable both interrupts if
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
264               * enabled - this is to avoid races around changing
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
265               * config and thresholds.
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
266               * Note enable/disable_irq() are reference counted so
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
267               * no need to check if already enabled.
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
268               */
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
269              disable_irq(chip->interrupts[0]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
270              disable_irq(chip->interrupts[1]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
271  
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
272              ret = i2c_smbus_read_byte_data(chip->client, AD7150_CFG_REG);
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
273              if (ret < 0)
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
274                      goto error_ret;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
275  
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
276              cfg = ret & ~(AD7150_CFG_THRESHTYPE_MSK | AD7150_CFG_FIX);
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
277  
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
278              if (type == IIO_EV_TYPE_THRESH_ADAPTIVE)
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
279                      fixed = 0;
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
280              else
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
281                      fixed = 1;
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
282  
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
283              if (rising)
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
284                      thresh_type = AD7150_CFG_TT_POS;
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
285              else
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
286                      thresh_type = AD7150_CFG_TT_NEG;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
287  
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
288              cfg |= FIELD_PREP(AD7150_CFG_FIX, fixed) |
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
289                      FIELD_PREP(AD7150_CFG_THRESHTYPE_MSK, thresh_type);
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
290  
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
291              ret = i2c_smbus_write_byte_data(chip->client, AD7150_CFG_REG,
45fdaf4b51faa3 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
292                                              cfg);
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
293              if (ret < 0)
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
294                      goto error_ret;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
295  
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
296              /*
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
297               * There is a potential race condition here, but not easy
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
298               * to close given we can't disable the interrupt at the
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
299               * chip side of things. Rely on the status bit.
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
300               */
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
301              chip->type = type;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
302              chip->dir = dir;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
303  
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
304              /* update control attributes */
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
305              ret = ad7150_write_event_params(indio_dev, chan->channel, type,
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
306                                              dir);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
307              if (ret)
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
308                      goto error_ret;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
309              /* reenable any irq's we disabled whilst changing mode */
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
310              enable_irq(chip->interrupts[0]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
311              enable_irq(chip->interrupts[1]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
312      }
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
313      if (!chip->int_enabled[chan->channel]) {
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
314              enable_irq(chip->interrupts[chan->channel]);
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
315              chip->int_enabled[chan->channel] = true;
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
316      }
b8546bdcf08e97 drivers/staging/iio/cdc/ad7150.c Jonathan Cameron   2021-03-14  
317  
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
318  error_ret:
531efd6aa09916 drivers/staging/iio/adc/ad7150.c Jonathan Cameron   2011-09-02  
319      mutex_unlock(&chip->state_lock);
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
320  
91ca1a8c584f55 drivers/staging/iio/cdc/ad7150.c Pan Bian           2016-12-03 
@321      return ret;
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  
322  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to