:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check warning: kernel/trace/trace_probe.c:1061:30: warning: use of NULL 'event_name' where non-null expected [CWE-476] [-Wanalyzer-null-argument]" ::::::
BCC: l...@intel.com CC: kbuild-...@lists.01.org CC: linux-ker...@vger.kernel.org TO: Masami Hiramatsu <mhira...@kernel.org> CC: "Steven Rostedt (VMware)" <rost...@goodmis.org> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 6614a3c3164a5df2b54abb0b3559f51041cf705b commit: 8e242060c6a4947e8ae7d29794af6a581db08841 tracing/probes: Reject events which have the same name of existing one date: 12 months ago :::::: branch date: 14 hours ago :::::: commit date: 12 months ago config: arm-randconfig-c002-20220804 (https://download.01.org/0day-ci/archive/20220806/202208062156.yfcfcvo2-...@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8e242060c6a4947e8ae7d29794af6a581db08841 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 8e242060c6a4947e8ae7d29794af6a581db08841 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <l...@intel.com> gcc-analyzer warnings: (new ones prefixed by >>) | 760 | int traceprobe_parse_probe_arg(struct trace_probe *tp, int i, const char *arg, | | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'traceprobe_parse_probe_arg' |...... | 770 | if (body) { | | ~ | | | | | (2) following 'true' branch (when 'body' is non-NULL)... | 771 | if (body - arg > MAX_ARG_NAME_LEN) { | | ~~~~~~~~~~~ | | | | | | | (3) ...to here | | (4) following 'false' branch... |...... | 774 | } else if (body == arg) { | | ~ | | | | | (5) ...to here | | (6) following 'false' branch (when 'arg != body')... |...... | 778 | parg->name = kmemdup_nul(arg, body - arg, GFP_KERNEL); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (7) ...to here |...... | 785 | if (!parg->name) | | ~ | | | | | (8) following 'false' branch... |...... | 788 | if (!is_good_name(parg->name)) { | | ~ ~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (9) ...to here | | (10) following 'true' branch... |...... | 792 | if (traceprobe_conflict_field_name(parg->name, tp->args, i)) { | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (11) ...to here | | (12) calling 'traceprobe_conflict_field_name' from 'traceprobe_parse_probe_arg' | +--> 'traceprobe_conflict_field_name': event 13 | | 744 | static int traceprobe_conflict_field_name(const char *name, | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to 'traceprobe_conflict_field_name' | 'traceprobe_conflict_field_name': events 14-15 | | 749 | for (i = 0; i < ARRAY_SIZE(reserved_field_names); i++) | 750 | if (strcmp(reserved_field_names[i], name) == 0) | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (15) ...to here | <------+ | 'traceprobe_parse_probe_arg': events 16-19 | | 792 | if (traceprobe_conflict_field_name(parg->name, tp->args, i)) { | | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | || | | |(16) returning to 'traceprobe_parse_probe_arg' from 'traceprobe_conflict_field_name' | | (17) following 'false' branch... |...... | 797 | return traceprobe_parse_probe_arg_body(body, &tp->size, parg, flags, | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (18) ...to here | | (19) calling 'traceprobe_parse_probe_arg_body' from 'traceprobe_parse_probe_arg' | 798 | body - arg); | | ~~~~~~~~~~~ | +--> 'traceprobe_parse_probe_arg_body': events 20-21 | | 546 | static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size, | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (20) entry to 'traceprobe_parse_probe_arg_body' |...... | 549 | struct fetch_insn *code, *scode, *tmp = NULL; | | ~~~~ | | | | | (21) use of uninitialized value '<unknown>' here | kernel/trace/trace_probe.c: In function 'traceprobe_update_arg': kernel/trace/trace_probe.c:820:14: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 820 | long offset; | ^~~~~~ 'traceprobe_update_arg': event 1 | | 820 | long offset; | | ^~~~~~ | | | | | (1) use of uninitialized value '<unknown>' here | kernel/trace/trace_probe.c: In function 'find_trace_event_call': >> kernel/trace/trace_probe.c:1061:30: warning: use of NULL 'event_name' where >> non-null expected [CWE-476] [-Wanalyzer-null-argument] 1061 | if (!name || strcmp(event_name, name)) | ^~~~~~~~~~~~~~~~~~~~~~~~ 'trace_probe_register_event_call': event 1 | | 1069 | int trace_probe_register_event_call(struct trace_probe *tp) | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'trace_probe_register_event_call' | 'trace_probe_register_event_call': event 2 | |include/asm-generic/bug.h:122:12: | 122 | if (unlikely(__ret_warn_on)) \ | | ^ | | | | | (2) following 'false' branch... include/linux/lockdep.h:310:17: note: in expansion of macro 'WARN_ON' | 310 | WARN_ON(debug_locks && \ | | ^~~~~~~ kernel/trace/trace_probe.c:1074:9: note: in expansion of macro 'lockdep_assert_held' | 1074 | lockdep_assert_held(&event_mutex); | | ^~~~~~~~~~~~~~~~~~~ | 'trace_probe_register_event_call': event 3 | |kernel/trace/trace_probe.h:284:18: | 284 | return tp->event->call.class->system; | | ~~^~~~~~~ | | | | | (3) ...to here | 'trace_probe_register_event_call': event 4 | |kernel/trace/trace_probe.c:1076:13: | 1076 | if (find_trace_event_call(trace_probe_group_name(tp), | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'trace_probe_name' from 'trace_probe_register_event_call' | 1077 | trace_probe_name(tp))) | | ~~~~~~~~~~~~~~~~~~~~~ | +--> 'trace_probe_name': events 5-6 | |kernel/trace/trace_probe.h:277:27: | 277 | static inline const char *trace_probe_name(struct trace_probe *tp) | | ^~~~~~~~~~~~~~~~ | | | | | (5) entry to 'trace_probe_name' | 278 | { | 279 | return trace_event_name(&tp->event->call); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (6) calling 'trace_event_name' from 'trace_probe_name' | +--> 'trace_event_name': events 7-9 | |include/linux/trace_events.h:437:1: | 437 | trace_event_name(struct trace_event_call *call) | | ^~~~~~~~~~~~~~~~ | | | | | (7) entry to 'trace_event_name' | 438 | { | 439 | if (call->flags & TRACE_EVENT_FL_TRACEPOINT) | | ~ | | | | | (8) following 'true' branch... | 440 | return call->tp ? call->tp->name : NULL; | | ~~~~~~~~ | | | | | (9) ...to here | 'trace_event_name': event 10 | | 440 | return call->tp ? call->tp->name : NULL; | 'trace_event_name': event 11 | |cc1: | (11): ...to here | <------+ | 'trace_probe_name': event 12 | |kernel/trace/trace_probe.h:279:16: | 279 | return trace_event_name(&tp->event->call); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (12) returning to 'trace_probe_name' from 'trace_event_name' | <------+ | 'trace_probe_register_event_call': events 13-14 | |kernel/trace/trace_probe.c:1076:13: | 1076 | if (find_trace_event_call(trace_probe_group_name(tp), | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (13) returning to 'trace_probe_register_event_call' from 'trace_probe_name' | | (14) calling 'find_trace_event_call' from 'trace_probe_register_event_call' vim +/event_name +1061 kernel/trace/trace_probe.c 46e5376d404d14 Masami Hiramatsu 2019-06-01 1049 8e242060c6a494 Masami Hiramatsu 2021-08-19 1050 static struct trace_event_call * 8e242060c6a494 Masami Hiramatsu 2021-08-19 1051 find_trace_event_call(const char *system, const char *event_name) 8e242060c6a494 Masami Hiramatsu 2021-08-19 1052 { 8e242060c6a494 Masami Hiramatsu 2021-08-19 1053 struct trace_event_call *tp_event; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1054 const char *name; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1055 8e242060c6a494 Masami Hiramatsu 2021-08-19 1056 list_for_each_entry(tp_event, &ftrace_events, list) { 8e242060c6a494 Masami Hiramatsu 2021-08-19 1057 if (!tp_event->class->system || 8e242060c6a494 Masami Hiramatsu 2021-08-19 1058 strcmp(system, tp_event->class->system)) 8e242060c6a494 Masami Hiramatsu 2021-08-19 1059 continue; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1060 name = trace_event_name(tp_event); 8e242060c6a494 Masami Hiramatsu 2021-08-19 @1061 if (!name || strcmp(event_name, name)) 8e242060c6a494 Masami Hiramatsu 2021-08-19 1062 continue; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1063 return tp_event; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1064 } 8e242060c6a494 Masami Hiramatsu 2021-08-19 1065 8e242060c6a494 Masami Hiramatsu 2021-08-19 1066 return NULL; 8e242060c6a494 Masami Hiramatsu 2021-08-19 1067 } 8e242060c6a494 Masami Hiramatsu 2021-08-19 1068 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org