All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 8601/10945] kernel/trace/trace_eprobe.c:51:2: warning: Argument to kfree() is a constant address (4294967277), which is not memory allocated by malloc() [clang-analyzer-unix.Malloc]
@ 2021-08-28 12:21 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-08-28 12:21 UTC (permalink / raw)
  To: kbuild

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
CC: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   5e63226c72287bc6c6724d4fc7e157af0e3d7908
commit: 7491e2c442781a1860181adb5ab472a52075f393 [8601/10945] tracing: Add a probe that attaches to trace events
:::::: branch date: 25 hours ago
:::::: commit date: 8 days ago
config: i386-randconfig-c001-20210827 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 1076082a0d97bd5c16a25ee7cf3dbb6ee4b5a9fe)
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/next/linux-next.git/commit/?id=7491e2c442781a1860181adb5ab472a52075f393
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 7491e2c442781a1860181adb5ab472a52075f393
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
                              ^
   include/linux/compiler_types.h:290:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/list.h:282:9: note: Left side of '||' is false
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:290:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/list.h:282:9: note: Left side of '||' is true
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:291:28: note: expanded from macro '__native_word'
            sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
                                     ^
   include/linux/list.h:282:9: note: Taking false branch
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
           ^
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   include/linux/list.h:282:9: note: Loop condition is false.  Exiting loop
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
           ^
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   include/linux/list.h:282:2: note: Returning zero, which participates in a condition later
           return READ_ONCE(head->next) == head;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:467:7: note: Returning from 'list_empty'
           if (!list_empty(list))
                ^~~~~~~~~~~~~~~~
   include/linux/list.h:467:2: note: Taking true branch
           if (!list_empty(list))
           ^
   include/linux/list.h:468:23: note: Passing null pointer value via 2nd parameter 'prev'
                   __list_splice(list, head->prev, head);
                                       ^~~~~~~~~~
   include/linux/list.h:468:3: note: Calling '__list_splice'
                   __list_splice(list, head->prev, head);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:441:13: note: Access to field 'next' results in a dereference of a null pointer (loaded from variable 'prev')
           prev->next = first;
           ~~~~       ^
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   9 warnings generated.
>> kernel/trace/trace_eprobe.c:51:2: warning: Argument to kfree() is a constant address (4294967277), which is not memory allocated by malloc() [clang-analyzer-unix.Malloc]
           kfree(ep);
           ^
   kernel/trace/trace_eprobe.c:817:6: note: Assuming 'argc' is >= 2
           if (argc < 2 || argv[0][0] != 'e')
               ^~~~~~~~
   kernel/trace/trace_eprobe.c:817:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:817:18: note: Assuming the condition is false
           if (argc < 2 || argv[0][0] != 'e')
                           ^~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:817:2: note: Taking false branch
           if (argc < 2 || argv[0][0] != 'e')
           ^
   kernel/trace/trace_eprobe.c:823:6: note: Assuming 'event' is non-null
           if (event) {
               ^~~~~
   kernel/trace/trace_eprobe.c:823:2: note: Taking true branch
           if (event) {
           ^
   kernel/trace/trace_eprobe.c:827:7: note: Assuming 'ret' is 0
                   if (ret)
                       ^~~
   kernel/trace/trace_eprobe.c:827:3: note: Taking false branch
                   if (ret)
                   ^
   kernel/trace/trace_eprobe.c:834:6: note: Left side of '||' is false
           if (!is_good_name(event) || !is_good_name(group))
               ^
   kernel/trace/trace_eprobe.c:834:2: note: Taking false branch
           if (!is_good_name(event) || !is_good_name(group))
           ^
   kernel/trace/trace_eprobe.c:840:6: note: Assuming 'ret' is 0
           if (ret || !sys_name)
               ^~~
   kernel/trace/trace_eprobe.c:840:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:840:13: note: Assuming 'sys_name' is non-null
           if (ret || !sys_name)
                      ^~~~~~~~~
   kernel/trace/trace_eprobe.c:840:2: note: Taking false branch
           if (ret || !sys_name)
           ^
   kernel/trace/trace_eprobe.c:842:6: note: Left side of '||' is false
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
               ^
   kernel/trace/trace_eprobe.c:842:2: note: Taking false branch
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
           ^
   kernel/trace/trace_eprobe.c:850:2: note: Taking true branch
           if (IS_ERR(ep)) {
           ^
   kernel/trace/trace_eprobe.c:853:3: note: Taking true branch
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:105:2: note: expanded from macro 'WARN_ON_ONCE'
           if (unlikely(__ret_warn_on))                            \
           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:78:2: note: expanded from macro '__WARN_FLAGS'
           instrumentation_begin();                                \
           ^
   include/linux/instrumentation.h:57:34: note: expanded from macro 'instrumentation_begin'
   # define instrumentation_begin()        do { } while(0)
                                           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS'
           _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));           \
           ^
   arch/x86/include/asm/bug.h:25:37: note: expanded from macro '_BUG_FLAGS'
   #define _BUG_FLAGS(ins, flags)                                          \
                                                                           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:81:2: note: expanded from macro '__WARN_FLAGS'
           instrumentation_end();                                  \
           ^
   include/linux/instrumentation.h:58:33: note: expanded from macro 'instrumentation_end'
   # define instrumentation_end()          do { } while(0)
                                           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:76:33: note: expanded from macro '__WARN_FLAGS'
   #define __WARN_FLAGS(flags)                                     \
                                                                   ^
--
           ^
   kernel/trace/trace_eprobe.c:49:6: note: Assuming field 'event' is null
           if (ep->event)
               ^~~~~~~~~
   kernel/trace/trace_eprobe.c:49:2: note: Taking false branch
           if (ep->event)
           ^
   kernel/trace/trace_eprobe.c:51:2: note: Argument to kfree() is a constant address (4294967277), which is not memory allocated by malloc()
           kfree(ep);
           ^     ~~
   kernel/trace/trace_eprobe.c:51:2: warning: Argument to kfree() is a constant address (4294967284), which is not memory allocated by malloc() [clang-analyzer-unix.Malloc]
           kfree(ep);
           ^
   kernel/trace/trace_eprobe.c:817:6: note: Assuming 'argc' is >= 2
           if (argc < 2 || argv[0][0] != 'e')
               ^~~~~~~~
   kernel/trace/trace_eprobe.c:817:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:817:18: note: Assuming the condition is false
           if (argc < 2 || argv[0][0] != 'e')
                           ^~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:817:2: note: Taking false branch
           if (argc < 2 || argv[0][0] != 'e')
           ^
   kernel/trace/trace_eprobe.c:823:6: note: Assuming 'event' is non-null
           if (event) {
               ^~~~~
   kernel/trace/trace_eprobe.c:823:2: note: Taking true branch
           if (event) {
           ^
   kernel/trace/trace_eprobe.c:827:7: note: Assuming 'ret' is 0
                   if (ret)
                       ^~~
   kernel/trace/trace_eprobe.c:827:3: note: Taking false branch
                   if (ret)
                   ^
   kernel/trace/trace_eprobe.c:834:6: note: Left side of '||' is false
           if (!is_good_name(event) || !is_good_name(group))
               ^
   kernel/trace/trace_eprobe.c:834:30: note: Assuming the condition is false
           if (!is_good_name(event) || !is_good_name(group))
                                       ^~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:2: note: Taking false branch
           if (!is_good_name(event) || !is_good_name(group))
           ^
   kernel/trace/trace_eprobe.c:840:6: note: Assuming 'ret' is 0
           if (ret || !sys_name)
               ^~~
   kernel/trace/trace_eprobe.c:840:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:840:13: note: Assuming 'sys_name' is non-null
           if (ret || !sys_name)
                      ^~~~~~~~~
   kernel/trace/trace_eprobe.c:840:2: note: Taking false branch
           if (ret || !sys_name)
           ^
   kernel/trace/trace_eprobe.c:842:6: note: Assuming the condition is false
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
               ^~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:842:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:842:34: note: Assuming the condition is false
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
                                           ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:842:2: note: Taking false branch
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
           ^
   kernel/trace/trace_eprobe.c:850:2: note: Taking true branch
           if (IS_ERR(ep)) {
           ^
   kernel/trace/trace_eprobe.c:853:16: note: Assuming the condition is false
                   WARN_ON_ONCE(ret != -ENOMEM);
                                ^
   include/asm-generic/bug.h:104:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   kernel/trace/trace_eprobe.c:853:3: note: Taking false branch
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:105:2: note: expanded from macro 'WARN_ON_ONCE'
           if (unlikely(__ret_warn_on))                            \
           ^
   kernel/trace/trace_eprobe.c:854:3: note: Control jumps to line 885
                   goto error;     /* We know ep is not allocated */
                   ^
   kernel/trace/trace_eprobe.c:885:2: note: Calling 'trace_event_probe_cleanup'
           trace_event_probe_cleanup(ep);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:44:7: note: 'ep' is non-null
           if (!ep)
                ^~
   kernel/trace/trace_eprobe.c:44:2: note: Taking false branch
           if (!ep)
           ^
   kernel/trace/trace_eprobe.c:49:6: note: Assuming field 'event' is null
           if (ep->event)
               ^~~~~~~~~
   kernel/trace/trace_eprobe.c:49:2: note: Taking false branch
           if (ep->event)
           ^
   kernel/trace/trace_eprobe.c:51:2: note: Argument to kfree() is a constant address (4294967284), which is not memory allocated by malloc()
           kfree(ep);
           ^     ~~
>> kernel/trace/trace_eprobe.c:154:23: warning: Access to field 'event' results in a dereference of a null pointer (loaded from variable 'ep') [clang-analyzer-core.NullDereference]
                   trace_event_put_ref(ep->event);
                                       ^
   kernel/trace/trace_eprobe.c:817:6: note: Assuming 'argc' is >= 2
           if (argc < 2 || argv[0][0] != 'e')
               ^~~~~~~~
   kernel/trace/trace_eprobe.c:817:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:817:18: note: Assuming the condition is false
           if (argc < 2 || argv[0][0] != 'e')
                           ^~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:817:2: note: Taking false branch
           if (argc < 2 || argv[0][0] != 'e')
           ^
   kernel/trace/trace_eprobe.c:823:6: note: Assuming 'event' is non-null
           if (event) {
               ^~~~~
   kernel/trace/trace_eprobe.c:823:2: note: Taking true branch
           if (event) {
           ^
   kernel/trace/trace_eprobe.c:827:7: note: Assuming 'ret' is 0
                   if (ret)
                       ^~~
   kernel/trace/trace_eprobe.c:827:3: note: Taking false branch
                   if (ret)
                   ^
   kernel/trace/trace_eprobe.c:834:7: note: Calling 'is_good_name'
           if (!is_good_name(event) || !is_good_name(group))
                ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:6: note: Assuming the condition is false
           if (!isalpha(*name) && *name != '_')
               ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:22: note: Left side of '&&' is false
           if (!isalpha(*name) && *name != '_')
                               ^
   kernel/trace/trace.h:1924:9: note: Assuming the condition is false
           while (*++name != '\0') {
                  ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1924:2: note: Loop condition is false. Execution continues on line 1928
           while (*++name != '\0') {
           ^
   kernel/trace/trace.h:1928:2: note: Returning the value 1, which participates in a condition later
           return true;
           ^~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:7: note: Returning from 'is_good_name'
           if (!is_good_name(event) || !is_good_name(group))
                ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:6: note: Left side of '||' is false
           if (!is_good_name(event) || !is_good_name(group))
               ^
   kernel/trace/trace_eprobe.c:834:31: note: Calling 'is_good_name'
           if (!is_good_name(event) || !is_good_name(group))
                                        ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:6: note: Assuming the condition is false
           if (!isalpha(*name) && *name != '_')
               ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:22: note: Left side of '&&' is false
           if (!isalpha(*name) && *name != '_')
                               ^
   kernel/trace/trace.h:1924:9: note: Assuming the condition is false
           while (*++name != '\0') {
                  ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1924:2: note: Loop condition is false. Execution continues on line 1928
           while (*++name != '\0') {
           ^
   kernel/trace/trace.h:1928:2: note: Returning the value 1, which participates in a condition later
           return true;
           ^~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:31: note: Returning from 'is_good_name'
           if (!is_good_name(event) || !is_good_name(group))
                                        ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:2: note: Taking false branch
           if (!is_good_name(event) || !is_good_name(group))
           ^
   kernel/trace/trace_eprobe.c:840:6: note: Assuming 'ret' is 0
           if (ret || !sys_name)
               ^~~
   kernel/trace/trace_eprobe.c:840:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:840:13: note: Assuming 'sys_name' is non-null
           if (ret || !sys_name)
                      ^~~~~~~~~
   kernel/trace/trace_eprobe.c:840:2: note: Taking false branch
           if (ret || !sys_name)
           ^
   kernel/trace/trace_eprobe.c:842:7: note: Calling 'is_good_name'
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
                ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:6: note: Assuming the condition is false
           if (!isalpha(*name) && *name != '_')
               ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1922:22: note: Left side of '&&' is false
           if (!isalpha(*name) && *name != '_')
                               ^
   kernel/trace/trace.h:1924:9: note: Assuming the condition is false
           while (*++name != '\0') {
                  ^~~~~~~~~~~~~~~
   kernel/trace/trace.h:1924:2: note: Loop condition is false. Execution continues on line 1928
           while (*++name != '\0') {
           ^
   kernel/trace/trace.h:1928:2: note: Returning the value 1, which participates in a condition later
           return true;
           ^~~~~~~~~~~
--
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   kernel/trace/trace_eprobe.c:703:3: note: Taking false branch
                   list_for_each_entry(pos, trace_probe_probe_list(tp), list) {
                   ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   kernel/trace/trace_eprobe.c:703:3: note: Loop condition is false.  Exiting loop
                   list_for_each_entry(pos, trace_probe_probe_list(tp), list) {
                   ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   kernel/trace/trace_eprobe.c:703:3: note: Loop condition is true.  Entering loop body
                   list_for_each_entry(pos, trace_probe_probe_list(tp), list) {
                   ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   kernel/trace/trace_eprobe.c:704:9: note: Left side of '&&' is false
                           ep = container_of(pos, struct trace_eprobe, tp);
                                ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   kernel/trace/trace_eprobe.c:704:9: note: Taking false branch
                           ep = container_of(pos, struct trace_eprobe, tp);
                                ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   kernel/trace/trace_eprobe.c:704:9: note: Loop condition is false.  Exiting loop
                           ep = container_of(pos, struct trace_eprobe, tp);
                                ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   kernel/trace/trace_eprobe.c:705:23: note: Access to field 'tr' results in a dereference of a null pointer (loaded from variable 'file')
                           disable_eprobe(ep, file->tr);
                                              ^~~~
>> kernel/trace/trace_eprobe.c:886:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
           return ret;
           ^      ~~~
   kernel/trace/trace_eprobe.c:817:6: note: Assuming 'argc' is >= 2
           if (argc < 2 || argv[0][0] != 'e')
               ^~~~~~~~
   kernel/trace/trace_eprobe.c:817:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:817:18: note: Assuming the condition is false
           if (argc < 2 || argv[0][0] != 'e')
                           ^~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:817:2: note: Taking false branch
           if (argc < 2 || argv[0][0] != 'e')
           ^
   kernel/trace/trace_eprobe.c:823:6: note: Assuming 'event' is non-null
           if (event) {
               ^~~~~
   kernel/trace/trace_eprobe.c:823:2: note: Taking true branch
           if (event) {
           ^
   kernel/trace/trace_eprobe.c:827:7: note: Assuming 'ret' is 0
                   if (ret)
                       ^~~
   kernel/trace/trace_eprobe.c:827:3: note: Taking false branch
                   if (ret)
                   ^
   kernel/trace/trace_eprobe.c:834:6: note: Left side of '||' is false
           if (!is_good_name(event) || !is_good_name(group))
               ^
   kernel/trace/trace_eprobe.c:834:30: note: Assuming the condition is false
           if (!is_good_name(event) || !is_good_name(group))
                                       ^~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:834:2: note: Taking false branch
           if (!is_good_name(event) || !is_good_name(group))
           ^
   kernel/trace/trace_eprobe.c:840:6: note: Assuming 'ret' is 0
           if (ret || !sys_name)
               ^~~
   kernel/trace/trace_eprobe.c:840:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:840:13: note: Assuming 'sys_name' is non-null
           if (ret || !sys_name)
                      ^~~~~~~~~
   kernel/trace/trace_eprobe.c:840:2: note: Taking false branch
           if (ret || !sys_name)
           ^
   kernel/trace/trace_eprobe.c:842:6: note: Assuming the condition is false
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
               ^~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:842:6: note: Left side of '||' is false
   kernel/trace/trace_eprobe.c:842:34: note: Assuming the condition is false
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
                                           ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_eprobe.c:842:2: note: Taking false branch
           if (!is_good_name(sys_event) || !is_good_name(sys_name))
           ^
   kernel/trace/trace_eprobe.c:850:2: note: Taking true branch
           if (IS_ERR(ep)) {
           ^
   kernel/trace/trace_eprobe.c:853:16: note: Assuming the condition is true
                   WARN_ON_ONCE(ret != -ENOMEM);
                                ^
   include/asm-generic/bug.h:104:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   kernel/trace/trace_eprobe.c:853:3: note: Taking true branch
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:105:2: note: expanded from macro 'WARN_ON_ONCE'
           if (unlikely(__ret_warn_on))                            \
           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:78:2: note: expanded from macro '__WARN_FLAGS'
           instrumentation_begin();                                \
           ^
   include/linux/instrumentation.h:57:34: note: expanded from macro 'instrumentation_begin'
   # define instrumentation_begin()        do { } while(0)
                                           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS'
           _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));           \
           ^
   arch/x86/include/asm/bug.h:25:37: note: expanded from macro '_BUG_FLAGS'
   #define _BUG_FLAGS(ins, flags)                                          \
                                                                           ^
   kernel/trace/trace_eprobe.c:853:3: note: Loop condition is false.  Exiting loop
                   WARN_ON_ONCE(ret != -ENOMEM);
                   ^
   include/asm-generic/bug.h:106:3: note: expanded from macro 'WARN_ON_ONCE'
                   __WARN_FLAGS(BUGFLAG_ONCE |                     \
                   ^
   arch/x86/include/asm/bug.h:81:2: note: expanded from macro '__WARN_FLAGS'
           instrumentation_end();                                  \

vim +51 kernel/trace/trace_eprobe.c

7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   41) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   42) static void trace_event_probe_cleanup(struct trace_eprobe *ep)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   43) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   44) 	if (!ep)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   45) 		return;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   46) 	trace_probe_cleanup(&ep->tp);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   47) 	kfree(ep->event_name);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   48) 	kfree(ep->event_system);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   49) 	if (ep->event)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   50) 		trace_event_put_ref(ep->event);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  @51) 	kfree(ep);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   52) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   53) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   54) static struct trace_eprobe *to_trace_eprobe(struct dyn_event *ev)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   55) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   56) 	return container_of(ev, struct trace_eprobe, devent);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   57) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   58) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   59) static int eprobe_dyn_event_create(const char *raw_command)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   60) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   61) 	return trace_probe_create(raw_command, __trace_eprobe_create);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   62) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   63) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   64) static int eprobe_dyn_event_show(struct seq_file *m, struct dyn_event *ev)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   65) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   66) 	struct trace_eprobe *ep = to_trace_eprobe(ev);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   67) 	int i;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   68) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   69) 	seq_printf(m, "e:%s/%s", trace_probe_group_name(&ep->tp),
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   70) 				trace_probe_name(&ep->tp));
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   71) 	seq_printf(m, " %s.%s", ep->event_system, ep->event_name);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   72) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   73) 	for (i = 0; i < ep->tp.nr_args; i++)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   74) 		seq_printf(m, " %s=%s", ep->tp.args[i].name, ep->tp.args[i].comm);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   75) 	seq_putc(m, '\n');
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   76) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   77) 	return 0;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   78) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   79) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   80) static int unregister_trace_eprobe(struct trace_eprobe *ep)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   81) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   82) 	/* If other probes are on the event, just unregister eprobe */
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   83) 	if (trace_probe_has_sibling(&ep->tp))
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   84) 		goto unreg;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   85) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   86) 	/* Enabled event can not be unregistered */
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   87) 	if (trace_probe_is_enabled(&ep->tp))
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   88) 		return -EBUSY;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   89) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   90) 	/* Will fail if probe is being used by ftrace or perf */
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   91) 	if (trace_probe_unregister_event_call(&ep->tp))
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   92) 		return -EBUSY;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   93) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   94) unreg:
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   95) 	dyn_event_remove(&ep->devent);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   96) 	trace_probe_unlink(&ep->tp);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   97) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   98) 	return 0;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19   99) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  100) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  101) static int eprobe_dyn_event_release(struct dyn_event *ev)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  102) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  103) 	struct trace_eprobe *ep = to_trace_eprobe(ev);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  104) 	int ret = unregister_trace_eprobe(ep);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  105) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  106) 	if (!ret)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  107) 		trace_event_probe_cleanup(ep);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  108) 	return ret;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  109) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  110) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  111) static bool eprobe_dyn_event_is_busy(struct dyn_event *ev)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  112) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  113) 	struct trace_eprobe *ep = to_trace_eprobe(ev);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  114) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  115) 	return trace_probe_is_enabled(&ep->tp);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  116) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  117) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  118) static bool eprobe_dyn_event_match(const char *system, const char *event,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  119) 			int argc, const char **argv, struct dyn_event *ev)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  120) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  121) 	struct trace_eprobe *ep = to_trace_eprobe(ev);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  122) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  123) 	return strcmp(trace_probe_name(&ep->tp), event) == 0 &&
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  124) 	    (!system || strcmp(trace_probe_group_name(&ep->tp), system) == 0) &&
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  125) 	    trace_probe_match_command_args(&ep->tp, argc, argv);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  126) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  127) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  128) static struct dyn_event_operations eprobe_dyn_event_ops = {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  129) 	.create = eprobe_dyn_event_create,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  130) 	.show = eprobe_dyn_event_show,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  131) 	.is_busy = eprobe_dyn_event_is_busy,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  132) 	.free = eprobe_dyn_event_release,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  133) 	.match = eprobe_dyn_event_match,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  134) };
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  135) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  136) static struct trace_eprobe *alloc_event_probe(const char *group,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  137) 					      const char *this_event,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  138) 					      struct trace_event_call *event,
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  139) 					      int nargs)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  140) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  141) 	struct trace_eprobe *ep;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  142) 	const char *event_name;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  143) 	const char *sys_name;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  144) 	int ret = -ENOMEM;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  145) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  146) 	if (!event)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  147) 		return ERR_PTR(-ENODEV);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  148) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  149) 	sys_name = event->class->system;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  150) 	event_name = trace_event_name(event);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  151) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  152) 	ep = kzalloc(struct_size(ep, tp.args, nargs), GFP_KERNEL);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  153) 	if (!ep) {
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19 @154) 		trace_event_put_ref(ep->event);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  155) 		goto error;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  156) 	}
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  157) 	ep->event = event;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  158) 	ep->event_name = kstrdup(event_name, GFP_KERNEL);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  159) 	if (!ep->event_name)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  160) 		goto error;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  161) 	ep->event_system = kstrdup(sys_name, GFP_KERNEL);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  162) 	if (!ep->event_system)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  163) 		goto error;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  164) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  165) 	ret = trace_probe_init(&ep->tp, this_event, group, false);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  166) 	if (ret < 0)
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  167) 		goto error;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  168) 
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  169) 	dyn_event_init(&ep->devent, &eprobe_dyn_event_ops);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  170) 	return ep;
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  171) error:
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  172) 	trace_event_probe_cleanup(ep);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  173) 	return ERR_PTR(ret);
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  174) }
7491e2c442781a Tzvetomir Stoyanov (VMware  2021-08-19  175) 

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29186 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-08-28 12:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-28 12:21 [linux-next:master 8601/10945] kernel/trace/trace_eprobe.c:51:2: warning: Argument to kfree() is a constant address (4294967277), which is not memory allocated by malloc() [clang-analyzer-unix.Malloc] 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.