All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/trace/trace_probe.c:1061:30: warning: use of NULL 'event_name' where non-null expected [CWE-476]
@ 2022-08-06 13:17 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-08-06 13:17 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 13915 bytes --]

:::::: 
:::::: 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: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Masami Hiramatsu <mhiramat@kernel.org>
CC: "Steven Rostedt (VMware)" <rostedt@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-lkp(a)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 <lkp@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

^ permalink raw reply	[flat|nested] 2+ messages in thread
* kernel/trace/trace_probe.c:1061:30: warning: use of NULL 'event_name' where non-null expected [CWE-476]
@ 2022-07-03  2:35 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-07-03  2:35 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8495 bytes --]

:::::: 
:::::: 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]"
:::::: 

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Masami Hiramatsu <mhiramat@kernel.org>
CC: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   69cb6c6556ad89620547318439d6be8bb1629a5a
commit: 8e242060c6a4947e8ae7d29794af6a581db08841 tracing/probes: Reject events which have the same name of existing one
date:   11 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20220702 (https://download.01.org/0day-ci/archive/20220703/202207031004.PznWEg1J-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.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
         ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>


gcc-analyzer warnings: (new ones prefixed by >>)
   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:121:29:
       |  121 |         int __ret_warn_on = !!(condition);                              \
       |      |                             ^~~~~~~~~~~~~
       |      |                             |
       |      |                             (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': event 5
              |
              |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'
              |
            'trace_probe_name': events 6-7
              |
              |include/linux/trace_events.h:439:12:
              |  439 |         if (call->flags & TRACE_EVENT_FL_TRACEPOINT)
              |      |            ^
              |      |            |
              |      |            (6) following 'true' branch...
              |  440 |                 return call->tp ? call->tp->name : NULL;
              |      |                        ~~~~~~~~
              |      |                            |
              |      |                            (7) ...to here
              |
            'trace_probe_name': event 8
              |
              |  440 |                 return call->tp ? call->tp->name : NULL;
              |
            'trace_probe_name': event 9
              |
              |kernel/trace/trace_probe.h:279:16:
              |  279 |         return trace_event_name(&tp->event->call);
              |      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                |
              |      |                (9) ...to here
              |
       <------+
       |
     'trace_probe_register_event_call': events 10-11
       |
       |kernel/trace/trace_probe.c:1076:13:
       | 1076 |         if (find_trace_event_call(trace_probe_group_name(tp),
       |      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |             |
       |      |             (10) returning to 'trace_probe_register_event_call' from 'trace_probe_name'
       |      |             (11) calling 'find_trace_event_call' from 'trace_probe_register_event_call'
       | 1077 |                                   trace_probe_name(tp)))
       |      |                                   ~~~~~~~~~~~~~~~~~~~~~
       |
       +--> 'find_trace_event_call': event 12
              |
              | 1051 | find_trace_event_call(const char *system, const char *event_name)
              |      | ^~~~~~~~~~~~~~~~~~~~~
              |      | |
              |      | (12) entry to 'find_trace_event_call'
              |
            'find_trace_event_call': event 13
              |
              |include/linux/list.h:629:14:
              |  629 |              !list_entry_is_head(pos, head, member);                    \
              |      |              ^
              |      |              |
              |      |              (13) following 'true' branch...

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-08-06 13:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-06 13:17 kernel/trace/trace_probe.c:1061:30: warning: use of NULL 'event_name' where non-null expected [CWE-476] kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-07-03  2:35 kernel test robot

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.