From: kbuild test robot <lkp@intel.com>
To: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Linux Memory Management List <linux-mm@kvack.org>
Subject: 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: Mon, 20 May 2019 19:12:45 +0800 [thread overview]
Message-ID: <201905201938.LFZqzfPy%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8780 bytes --]
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@intel.com>
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@linux-fr.org>
:::::: 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 #2: .config.gz --]
[-- Type: application/gzip, Size: 51947 bytes --]
reply other threads:[~2019-05-20 11:13 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201905201938.LFZqzfPy%lkp@intel.com \
--to=lkp@intel.com \
--cc=akpm@linux-foundation.org \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.