drivers/hwmon/smsc47m1.c:373:53: warning: array subscript [0, 2] is outside array bounds of 'const u8[3]' {aka 'const unsigned char[3]'}

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a188339ca5a396acc588e5851ed7e19f66b0ebd9
commit: 9012d011660ea5cf2a623e1de207a2bc0ca6936d compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING
date:   5 days ago
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 8.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 9012d011660ea5cf2a623e1de207a2bc0ca6936d
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=sh 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   drivers/hwmon/smsc47m1.c: In function 'fan_div_store':
   drivers/hwmon/smsc47m1.c:370:49: warning: array subscript [0, 2] is outside array bounds of 'u8[3]' {aka 'unsigned char[3]'} [-Warray-bounds]
     tmp = 192 - (old_div * (192 - data->fan_preload[nr])
                                   ~~~~~~~~~~~~~~~~~^~~~
   drivers/hwmon/smsc47m1.c:372:19: warning: array subscript [0, 2] is outside array bounds of 'u8[3]' {aka 'unsigned char[3]'} [-Warray-bounds]
     data->fan_preload[nr] = clamp_val(tmp, 0, 191);
     ~~~~~~~~~~~~~~~~~^~~~
>> drivers/hwmon/smsc47m1.c:373:53: warning: array subscript [0, 2] is outside array bounds of 'const u8[3]' {aka 'const unsigned char[3]'} [-Warray-bounds]
     smsc47m1_write_value(data, SMSC47M1_REG_FAN_PRELOAD[nr],
                                ~~~~~~~~~~~~~~~~~~~~~~~~^~~~

vim +373 drivers/hwmon/smsc47m1.c

^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  309  
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  310  /*
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  311   * Note: we save and restore the fan minimum here, because its value is
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  312   * determined in part by the fan clock divider.  This follows the principle
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  313   * of least surprise; the user doesn't expect the fan minimum to change just
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  314   * because the divider changed.
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  315   */
96c6f81a drivers/hwmon/smsc47m1.c     Guenter Roeck  2019-01-22  316  static ssize_t fan_div_store(struct device *dev,
96c6f81a drivers/hwmon/smsc47m1.c     Guenter Roeck  2019-01-22  317  			     struct device_attribute *devattr,
96c6f81a drivers/hwmon/smsc47m1.c     Guenter Roeck  2019-01-22  318  			     const char *buf, size_t count)
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  319  {
e84cfbcb drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  320  	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  321  	struct smsc47m1_data *data = dev_get_drvdata(dev);
e84cfbcb drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  322  	int nr = attr->index;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  323  	long new_div;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  324  	int err;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  325  	long tmp;
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  326  	u8 old_div = DIV_FROM_REG(data->fan_div[nr]);
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  327  
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  328  	err = kstrtol(buf, 10, &new_div);
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  329  	if (err)
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  330  		return err;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  331  
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  332  	if (new_div == old_div) /* No change */
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  333  		return count;
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  334  
9a61bf63 drivers/hwmon/smsc47m1.c     Ingo Molnar    2006-01-18  335  	mutex_lock(&data->update_lock);
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  336  	switch (new_div) {
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  337  	case 1:
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  338  		data->fan_div[nr] = 0;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  339  		break;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  340  	case 2:
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  341  		data->fan_div[nr] = 1;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  342  		break;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  343  	case 4:
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  344  		data->fan_div[nr] = 2;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  345  		break;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  346  	case 8:
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  347  		data->fan_div[nr] = 3;
85a0c0d1 drivers/hwmon/smsc47m1.c     Guenter Roeck  2012-01-14  348  		break;
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  349  	default:
9a61bf63 drivers/hwmon/smsc47m1.c     Ingo Molnar    2006-01-18  350  		mutex_unlock(&data->update_lock);
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  351  		return -EINVAL;
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  352  	}
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  353  
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  354  	switch (nr) {
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  355  	case 0:
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  356  	case 1:
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  357  		tmp = smsc47m1_read_value(data, SMSC47M1_REG_FANDIV)
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  358  		      & ~(0x03 << (4 + 2 * nr));
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  359  		tmp |= data->fan_div[nr] << (4 + 2 * nr);
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  360  		smsc47m1_write_value(data, SMSC47M1_REG_FANDIV, tmp);
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  361  		break;
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  362  	case 2:
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  363  		tmp = smsc47m1_read_value(data, SMSC47M2_REG_FANDIV3) & 0xCF;
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  364  		tmp |= data->fan_div[2] << 4;
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  365  		smsc47m1_write_value(data, SMSC47M2_REG_FANDIV3, tmp);
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  366  		break;
8eccbb6f drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08  367  	}
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  368  
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  369  	/* Preserve fan min */
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16 @370  	tmp = 192 - (old_div * (192 - data->fan_preload[nr])
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  371  		     + new_div / 2) / new_div;
2a844c14 drivers/hwmon/smsc47m1.c     Guenter Roeck  2013-01-09  372  	data->fan_preload[nr] = clamp_val(tmp, 0, 191);
51f2cca1 drivers/hwmon/smsc47m1.c     Jean Delvare   2007-05-08 @373  	smsc47m1_write_value(data, SMSC47M1_REG_FAN_PRELOAD[nr],
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  374  			     data->fan_preload[nr]);
9a61bf63 drivers/hwmon/smsc47m1.c     Ingo Molnar    2006-01-18  375  	mutex_unlock(&data->update_lock);
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  376  
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  377  	return count;
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  378  }
^1da177e drivers/i2c/chips/smsc47m1.c Linus Torvalds 2005-04-16  379  

:::::: The code at line 373 was first introduced by commit
:::::: 51f2cca1f72db5e272ed79b678b62fb9472e916e hwmon/smsc47m1: Convert to a platform driver

:::::: TO: Jean Delvare <khali@xxxxxxxxxxxx>
:::::: CC: Jean Delvare <khali@hyperion.delvare>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux