tree:
https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git
20200605-blktrace-fixes-v4
head: 5198fc554bd362e6b4800af7fddd577e0558ed50
commit: 5198fc554bd362e6b4800af7fddd577e0558ed50 [8/8] blktrace: fix debugfs use after
free
config: i386-randconfig-s002-20200608 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-247-gcadbd124-dirty
git checkout 5198fc554bd362e6b4800af7fddd577e0558ed50
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
1540 | [__BLK_TA_REQUEUE] = {{ "R", "requeue" },
blk_log_with_error },
| ^~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1540:48: note: (near initialization for
'what2act[6].print')
kernel/trace/blktrace.c:1541:44: error: initializer element is not constant
1541 | [__BLK_TA_ISSUE] = {{ "D", "issue" }, blk_log_generic },
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1541:44: note: (near initialization for
'what2act[7].print')
kernel/trace/blktrace.c:1542:49: error: initializer element is not constant
1542 | [__BLK_TA_COMPLETE] = {{ "C", "complete" },
blk_log_with_error },
| ^~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1542:49: note: (near initialization for
'what2act[8].print')
kernel/trace/blktrace.c:1543:43: error: initializer element is not constant
1543 | [__BLK_TA_PLUG] = {{ "P", "plug" }, blk_log_plug },
| ^~~~~~~~~~~~
kernel/trace/blktrace.c:1543:43: note: (near initialization for
'what2act[9].print')
kernel/trace/blktrace.c:1544:50: error: initializer element is not constant
1544 | [__BLK_TA_UNPLUG_IO] = {{ "U", "unplug_io" }, blk_log_unplug
},
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:1544:50: note: (near initialization for
'what2act[10].print')
kernel/trace/blktrace.c:1545:55: error: initializer element is not constant
1545 | [__BLK_TA_UNPLUG_TIMER] = {{ "UT", "unplug_timer" },
blk_log_unplug },
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:1545:55: note: (near initialization for
'what2act[11].print')
kernel/trace/blktrace.c:1546:46: error: initializer element is not constant
1546 | [__BLK_TA_INSERT] = {{ "I", "insert" }, blk_log_generic
},
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1546:46: note: (near initialization for
'what2act[12].print')
kernel/trace/blktrace.c:1547:44: error: initializer element is not constant
1547 | [__BLK_TA_SPLIT] = {{ "X", "split" }, blk_log_split },
| ^~~~~~~~~~~~~
kernel/trace/blktrace.c:1547:44: note: (near initialization for
'what2act[13].print')
kernel/trace/blktrace.c:1548:46: error: initializer element is not constant
1548 | [__BLK_TA_BOUNCE] = {{ "B", "bounce" }, blk_log_generic
},
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1548:46: note: (near initialization for
'what2act[14].print')
kernel/trace/blktrace.c:1549:44: error: initializer element is not constant
1549 | [__BLK_TA_REMAP] = {{ "A", "remap" }, blk_log_remap },
| ^~~~~~~~~~~~~
kernel/trace/blktrace.c:1549:44: note: (near initialization for
'what2act[15].print')
kernel/trace/blktrace.c:1552:26: error: invalid storage class for function
'print_one_line'
1552 | static enum print_line_t print_one_line(struct trace_iterator *iter,
| ^~~~~~~~~~~~~~
kernel/trace/blktrace.c:1585:26: error: invalid storage class for function
'blk_trace_event_print'
1585 | static enum print_line_t blk_trace_event_print(struct trace_iterator *iter,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1591:13: error: invalid storage class for function
'blk_trace_synthesize_old_trace'
1591 | static void blk_trace_synthesize_old_trace(struct trace_iterator *iter)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1607:1: error: invalid storage class for function
'blk_trace_event_print_binary'
1607 | blk_trace_event_print_binary(struct trace_iterator *iter, int flags,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1615:26: error: invalid storage class for function
'blk_tracer_print_line'
1615 | static enum print_line_t blk_tracer_print_line(struct trace_iterator *iter)
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1624:1: error: invalid storage class for function
'blk_tracer_set_flag'
1624 | blk_tracer_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)
| ^~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1638:11: error: initializer element is not constant
1638 | .init = blk_tracer_init,
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1638:11: note: (near initialization for
'blk_tracer.init')
kernel/trace/blktrace.c:1639:12: error: initializer element is not constant
1639 | .reset = blk_tracer_reset,
| ^~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1639:12: note: (near initialization for
'blk_tracer.reset')
kernel/trace/blktrace.c:1640:12: error: initializer element is not constant
1640 | .start = blk_tracer_start,
| ^~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1640:12: note: (near initialization for
'blk_tracer.start')
kernel/trace/blktrace.c:1641:11: error: initializer element is not constant
1641 | .stop = blk_tracer_stop,
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1641:11: note: (near initialization for
'blk_tracer.stop')
kernel/trace/blktrace.c:1642:18: error: initializer element is not constant
1642 | .print_header = blk_tracer_print_header,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1642:18: note: (near initialization for
'blk_tracer.print_header')
kernel/trace/blktrace.c:1643:16: error: initializer element is not constant
1643 | .print_line = blk_tracer_print_line,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1643:16: note: (near initialization for
'blk_tracer.print_line')
kernel/trace/blktrace.c:1645:14: error: initializer element is not constant
1645 | .set_flag = blk_tracer_set_flag,
| ^~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1645:14: note: (near initialization for
'blk_tracer.set_flag')
kernel/trace/blktrace.c:1649:12: error: initializer element is not constant
1649 | .trace = blk_trace_event_print,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1649:12: note: (near initialization for
'trace_blk_event_funcs.trace')
kernel/trace/blktrace.c:1650:13: error: initializer element is not constant
1650 | .binary = blk_trace_event_print_binary,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1650:13: note: (near initialization for
'trace_blk_event_funcs.binary')
kernel/trace/blktrace.c:1658:19: error: invalid storage class for function
'init_blk_tracer'
1658 | static int __init init_blk_tracer(void)
| ^~~~~~~~~~~~~~~
In file included from include/linux/export.h:43,
from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from kernel/trace/blktrace.c:9:
> include/linux/compiler.h:302:44: error: initializer element is
not constant
302 | __PASTE(__addressable_##sym, __LINE__) = (void *)&sym;
| ^
include/linux/init.h:189:2: note: in expansion of macro '__ADDRESSABLE'
189 | __ADDRESSABLE(fn) | ^~~~~~~~~~~~~
include/linux/init.h:200:35: note: in expansion of macro '___define_initcall'
200 | #define __define_initcall(fn, id) ___define_initcall(fn, id, .initcall##id)
| ^~~~~~~~~~~~~~~~~~
include/linux/init.h:229:30: note: in expansion of macro '__define_initcall'
229 | #define device_initcall(fn) __define_initcall(fn, 6)
| ^~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1674:1: note: in expansion of macro 'device_initcall'
1674 | device_initcall(init_blk_tracer);
| ^~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1676:12: error: invalid storage class for function
'blk_trace_remove_queue'
1676 | static int blk_trace_remove_queue(struct request_queue *q)
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1676:1: warning: ISO C90 forbids mixed declarations and code
[-Wdeclaration-after-statement]
1676 | static int blk_trace_remove_queue(struct request_queue *q)
| ^~~~~~
kernel/trace/blktrace.c:1694:12: error: invalid storage class for function
'blk_trace_setup_queue'
1694 | static int blk_trace_setup_queue(struct request_queue *q,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1726:16: error: invalid storage class for function
'sysfs_blk_trace_attr_show'
1726 | static ssize_t sysfs_blk_trace_attr_show(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1729:16: error: invalid storage class for function
'sysfs_blk_trace_attr_store'
1729 | static ssize_t sysfs_blk_trace_attr_store(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/genhd.h:36,
from include/linux/blkdev.h:11,
from kernel/trace/blktrace.c:10:
kernel/trace/blktrace.c:1734:7: error: 'sysfs_blk_trace_attr_show' undeclared
(first use in this function)
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
kernel/trace/blktrace.c:1733:2: note: in expansion of macro 'DEVICE_ATTR'
1733 | DEVICE_ATTR(_name, S_IRUGO | S_IWUSR, | ^~~~~~~~~~~
kernel/trace/blktrace.c:1737:8: note: in expansion of macro
'BLK_TRACE_DEVICE_ATTR'
1737 | static BLK_TRACE_DEVICE_ATTR(enable);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1734:7: note: each undeclared identifier is reported only once for
each function it appears in
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
kernel/trace/blktrace.c:1733:2: note: in expansion of macro 'DEVICE_ATTR'
1733 | DEVICE_ATTR(_name, S_IRUGO | S_IWUSR, | ^~~~~~~~~~~
kernel/trace/blktrace.c:1737:8: note: in expansion of macro
'BLK_TRACE_DEVICE_ATTR'
1737 | static BLK_TRACE_DEVICE_ATTR(enable);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1734:7: error: initialization of 'ssize_t (*)(struct device *,
struct device_attribute *, char *)' {aka 'int (*)(struct device *, struct
device_attribute *, char *)'} from incompatible pointer type 'const struct
<anonymous> *' [-Werror=incompatible-pointer-types]
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
kernel/trace/blktrace.c:1733:2: note: in expansion of macro 'DEVICE_ATTR'
1733 | DEVICE_ATTR(_name, S_IRUGO | S_IWUSR, | ^~~~~~~~~~~
kernel/trace/blktrace.c:1737:8: note: in expansion of macro
'BLK_TRACE_DEVICE_ATTR'
1737 | static BLK_TRACE_DEVICE_ATTR(enable);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1734:7: note: (near initialization for
'dev_attr_enable.show')
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
kernel/trace/blktrace.c:1733:2: note: in expansion of macro 'DEVICE_ATTR'
1733 | DEVICE_ATTR(_name, S_IRUGO | S_IWUSR, | ^~~~~~~~~~~
kernel/trace/blktrace.c:1737:8: note: in expansion of macro
'BLK_TRACE_DEVICE_ATTR'
1737 | static BLK_TRACE_DEVICE_ATTR(enable);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1734:7: error: initializer element is not constant
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
kernel/trace/blktrace.c:1733:2: note: in expansion of macro 'DEVICE_ATTR'
1733 | DEVICE_ATTR(_name, S_IRUGO | S_IWUSR, | ^~~~~~~~~~~
kernel/trace/blktrace.c:1737:8: note: in expansion of macro
'BLK_TRACE_DEVICE_ATTR'
1737 | static BLK_TRACE_DEVICE_ATTR(enable);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/trace/blktrace.c:1734:7: note: (near initialization for
'dev_attr_enable.show')
1734 | sysfs_blk_trace_attr_show, | ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/sysfs.h:104:10: note: in definition of macro '__ATTR'
104 | .show = _show, | ^~~~~
vim +302 include/linux/compiler.h
^1da177e4c3f41 Linus Torvalds 2005-04-16 293
7290d58095712a Ard Biesheuvel 2018-08-21 294 /*
7290d58095712a Ard Biesheuvel 2018-08-21 295 * Force the compiler to emit
'sym' as a symbol, so that we can reference
7290d58095712a Ard Biesheuvel 2018-08-21 296 * it from inline assembler. Necessary in
case 'sym' could be inlined
7290d58095712a Ard Biesheuvel 2018-08-21 297 * otherwise, or eliminated entirely due
to lack of references that are
7290d58095712a Ard Biesheuvel 2018-08-21 298 * visible to the compiler.
7290d58095712a Ard Biesheuvel 2018-08-21 299 */
7290d58095712a Ard Biesheuvel 2018-08-21 300 #define __ADDRESSABLE(sym) \
bfafddd8de426d Nick Desaulniers 2019-08-28 301 static void *
__section(.discard.addressable) __used \
7290d58095712a Ard Biesheuvel 2018-08-21 @302 __PASTE(__addressable_##sym, __LINE__)
= (void *)&sym;
7290d58095712a Ard Biesheuvel 2018-08-21 303
:::::: The code at line 302 was first introduced by commit
:::::: 7290d58095712a89f845e1bca05334796dd49ed2 module: use relative references for
__ksymtab entries
:::::: TO: Ard Biesheuvel <ard.biesheuvel(a)linaro.org>
:::::: CC: Linus Torvalds <torvalds(a)linux-foundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org