All of lore.kernel.org
 help / color / mirror / Atom feed
* [iio:testing 39/69] drivers/iio/cdc/ad7150.c:321 ad7150_write_event_config() error: uninitialized symbol 'ret'.
@ 2021-04-05 20:49 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-04-05 20:49 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 11730 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Jonathan Cameron <Jonathan.Cameron@huawei.com>
CC: Alexandru Ardelean <alexandru.ardelean@analog.com>

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.
:::::: branch date: 4 hours ago
:::::: commit date: 4 days ago
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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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

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

54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  231  
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)) {
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@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  }
54c5be349bf66e drivers/staging/iio/adc/ad7150.c Barry Song         2010-10-27  323  

:::::: The code at line 321 was first introduced by commit
:::::: 91ca1a8c584f55857b1f6ab20a1d3a1ce7a559bb staging: iio: cdc: fix improper return value

:::::: TO: Pan Bian <bianpan2016@163.com>
:::::: CC: Jonathan Cameron <jic23@kernel.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39218 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [iio:testing 39/69] drivers/iio/cdc/ad7150.c:321 ad7150_write_event_config() error: uninitialized symbol 'ret'.
@ 2021-04-13 12:48 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-04-13 12:48 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 11151 bytes --]

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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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@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/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39218 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [iio:testing 39/69] drivers/iio/cdc/ad7150.c:321 ad7150_write_event_config() error: uninitialized symbol 'ret'.
@ 2021-04-13 12:48 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-04-13 12:48 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 11151 bytes --]

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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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@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/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39218 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-04-13 12:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-05 20:49 [iio:testing 39/69] drivers/iio/cdc/ad7150.c:321 ad7150_write_event_config() error: uninitialized symbol 'ret' kernel test robot
2021-04-13 12:48 Dan Carpenter
2021-04-13 12:48 ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.