Re: [PATCH] media: cx25821: prevent out-of-bounds read on array card

From: kbuild test robot
Date: Sat Feb 03 2018 - 04:15:57 EST


Hi Colin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on v4.15 next-20180202]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Colin-King/media-cx25821-prevent-out-of-bounds-read-on-array-card/20180203-130958
base: git://linuxtv.org/media_tree.git master
config: i386-randconfig-sb0-02031534 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All warnings (new ones prefixed by >>):

In file included from include/linux/kernel.h:15:0,
from include/linux/list.h:9,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/i2c.h:30,
from drivers/media/pci/cx25821/cx25821-core.c:22:
drivers/media/pci/cx25821/cx25821-core.c: In function 'cx25821_dev_setup':
>> include/linux/build_bug.h:30:45: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'unsigned int' [-Wformat=]
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
^
include/linux/compiler-gcc.h:65:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
^
include/linux/kernel.h:71:59: note: in expansion of macro '__must_be_array'
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
^
>> include/linux/printk.h:308:34: note: in expansion of macro 'ARRAY_SIZE'
printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
^
drivers/media/pci/cx25821/cx25821.h:380:2: note: in expansion of macro 'pr_info'
pr_info("(%d): " fmt, dev->board, ##args)
^
drivers/media/pci/cx25821/cx25821-core.c:871:3: note: in expansion of macro 'CX25821_INFO'
CX25821_INFO("dev->nr >= %ld", ARRAY_SIZE(card));
^
--
In file included from include/linux/kernel.h:15:0,
from include/linux/list.h:9,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/i2c.h:30,
from drivers/media//pci/cx25821/cx25821-core.c:22:
drivers/media//pci/cx25821/cx25821-core.c: In function 'cx25821_dev_setup':
>> include/linux/build_bug.h:30:45: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'unsigned int' [-Wformat=]
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
^
include/linux/compiler-gcc.h:65:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
^
include/linux/kernel.h:71:59: note: in expansion of macro '__must_be_array'
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
^
>> include/linux/printk.h:308:34: note: in expansion of macro 'ARRAY_SIZE'
printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
^
drivers/media//pci/cx25821/cx25821.h:380:2: note: in expansion of macro 'pr_info'
pr_info("(%d): " fmt, dev->board, ##args)
^
drivers/media//pci/cx25821/cx25821-core.c:871:3: note: in expansion of macro 'CX25821_INFO'
CX25821_INFO("dev->nr >= %ld", ARRAY_SIZE(card));
^

vim +/ARRAY_SIZE +308 include/linux/printk.h

968ab183 Linus Torvalds 2010-11-15 287
6e099f55 Dan Streetman 2014-06-04 288 /*
6e099f55 Dan Streetman 2014-06-04 289 * These can be used to print at the various log levels.
6e099f55 Dan Streetman 2014-06-04 290 * All of these will print unconditionally, although note that pr_debug()
6e099f55 Dan Streetman 2014-06-04 291 * and other debug macros are compiled out unless either DEBUG is defined
6e099f55 Dan Streetman 2014-06-04 292 * or CONFIG_DYNAMIC_DEBUG is set.
6e099f55 Dan Streetman 2014-06-04 293 */
a0cba217 Linus Torvalds 2016-08-09 294 #define pr_emerg(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 295 printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 296 #define pr_alert(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 297 printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 298 #define pr_crit(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 299 printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 300 #define pr_err(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 301 printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 302 #define pr_warning(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 303 printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 304 #define pr_warn pr_warning
a0cba217 Linus Torvalds 2016-08-09 305 #define pr_notice(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 306 printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
a0cba217 Linus Torvalds 2016-08-09 307 #define pr_info(fmt, ...) \
a0cba217 Linus Torvalds 2016-08-09 @308 printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
7b1460ec Steven Rostedt 2015-04-15 309 /*
7b1460ec Steven Rostedt 2015-04-15 310 * Like KERN_CONT, pr_cont() should only be used when continuing
7b1460ec Steven Rostedt 2015-04-15 311 * a line with no newline ('\n') enclosed. Otherwise it defaults
7b1460ec Steven Rostedt 2015-04-15 312 * back to KERN_DEFAULT.
7b1460ec Steven Rostedt 2015-04-15 313 */
968ab183 Linus Torvalds 2010-11-15 314 #define pr_cont(fmt, ...) \
968ab183 Linus Torvalds 2010-11-15 315 printk(KERN_CONT fmt, ##__VA_ARGS__)
968ab183 Linus Torvalds 2010-11-15 316

:::::: The code at line 308 was first introduced by commit
:::::: a0cba2179ea4c1820fce2ee046b6ed90ecc56196 Revert "printk: create pr_<level> functions"

:::::: TO: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip