CC: l...@lists.linux.dev
CC: kbuild-...@lists.01.org
In-Reply-To: <20211129164951.220511-2-xiehua...@gmail.com>
References: <20211129164951.220511-2-xiehua...@gmail.com>
TO: Jeff Xie <xiehua...@gmail.com>

Hi Jeff,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on rostedt-trace/for-next]
[also build test WARNING on linux/master linus/master v5.16-rc3 next-20211130]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Jeff-Xie/trace-Introduce-objtrace-trigger-to-trace-the-kernel-object/20211130-041958
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git 
for-next
:::::: branch date: 23 hours ago
:::::: commit date: 23 hours ago
config: x86_64-randconfig-c007-20211128 
(https://download.01.org/0day-ci/archive/20211201/202112010332.h8xsohur-...@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
25eb7fa01d7ebbe67648ea03841cda55b4239ab2)
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://github.com/0day-ci/linux/commit/88ea43d691b0980bf49b4e579c39303cf3c9cd72
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Jeff-Xie/trace-Introduce-objtrace-trigger-to-trace-the-kernel-object/20211130-041958
        git checkout 88ea43d691b0980bf49b4e579c39303cf3c9cd72
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
           if (function != ACPI_READ && function != ACPI_WRITE)
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/ec.c:1283:6: note: Left side of '&&' is true
   drivers/acpi/ec.c:1283:31: note: Assuming 'function' is equal to ACPI_WRITE
           if (function != ACPI_READ && function != ACPI_WRITE)
                                        ^~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/ec.c:1283:2: note: Taking false branch
           if (function != ACPI_READ && function != ACPI_WRITE)
           ^
   drivers/acpi/ec.c:1286:6: note: Assuming field 'busy_polling' is true
           if (ec->busy_polling || bits > 8)
               ^~~~~~~~~~~~~~~~
   drivers/acpi/ec.c:1286:23: note: Left side of '||' is true
           if (ec->busy_polling || bits > 8)
                                ^
   drivers/acpi/ec.c:1289:14: note: Assuming 'i' is < 'bytes'
           for (i = 0; i < bytes; ++i, ++address, ++value)
                       ^~~~~~~~~
   drivers/acpi/ec.c:1289:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < bytes; ++i, ++address, ++value)
           ^
   drivers/acpi/ec.c:1290:13: note: 'function' is not equal to ACPI_READ
                   result = (function == ACPI_READ) ?
                             ^~~~~~~~
   drivers/acpi/ec.c:1290:12: note: '?' condition is false
                   result = (function == ACPI_READ) ?
                            ^
   drivers/acpi/ec.c:1292:4: note: Calling 'acpi_ec_write'
                           acpi_ec_write(ec, address, *value);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/ec.c:872:9: note: Calling 'acpi_ec_transaction'
           return acpi_ec_transaction(ec, &t);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/ec.c:807:2: note: 'glk' declared without an initial value
           u32 glk;
           ^~~~~~~
   drivers/acpi/ec.c:809:7: note: 'ec' is non-null
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                ^~
   drivers/acpi/ec.c:809:6: note: Left side of '||' is false
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
               ^
   drivers/acpi/ec.c:809:15: note: 't' is non-null
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                        ^
   drivers/acpi/ec.c:809:6: note: Left side of '||' is false
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
               ^
   drivers/acpi/ec.c:809:25: note: Field 'wlen' is 2
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                                  ^
   drivers/acpi/ec.c:809:22: note: Left side of '&&' is true
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                               ^
   drivers/acpi/ec.c:809:37: note: Field 'wdata' is non-null
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                                              ^
   drivers/acpi/ec.c:809:6: note: Left side of '||' is false
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
               ^
   drivers/acpi/ec.c:809:51: note: Field 'rlen' is 0
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                                                            ^
   drivers/acpi/ec.c:809:56: note: Left side of '&&' is false
           if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata))
                                                                 ^
   drivers/acpi/ec.c:811:9: note: Field 'rdata' is null
           if (t->rdata)
                  ^
   drivers/acpi/ec.c:811:2: note: Taking false branch
           if (t->rdata)
           ^
   drivers/acpi/ec.c:815:6: note: Assuming field 'global_lock' is false
           if (ec->global_lock) {
               ^~~~~~~~~~~~~~~
   drivers/acpi/ec.c:815:2: note: Taking false branch
           if (ec->global_lock) {
           ^
   drivers/acpi/ec.c:825:6: note: Assuming field 'global_lock' is true
           if (ec->global_lock)
               ^~~~~~~~~~~~~~~
   drivers/acpi/ec.c:825:2: note: Taking true branch
           if (ec->global_lock)
           ^
   drivers/acpi/ec.c:826:3: note: 1st function call argument is an 
uninitialized value
                   acpi_release_global_lock(glk);
                   ^                        ~~~
   drivers/acpi/ec.c:1576:2: warning: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_name(device), ACPI_EC_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/ec.c:1576:2: note: Call to function 'strcpy' is insecure as it 
does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_name(device), ACPI_EC_DEVICE_NAME);
           ^~~~~~
   drivers/acpi/ec.c:1577:2: warning: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(acpi_device_class(device), ACPI_EC_CLASS);
           ^~~~~~
   drivers/acpi/ec.c:1577:2: note: Call to function 'strcpy' is insecure as it 
does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(acpi_device_class(device), ACPI_EC_CLASS);
           ^~~~~~
   3 warnings generated.
>> kernel/trace/trace_object.c:99:2: warning: Use of memory after it is freed 
>> [clang-analyzer-unix.Malloc]
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:50:2: note: expanded from macro 'READ_ONCE'
           __READ_ONCE(x);                                                 \
           ^
   include/asm-generic/rwonce.h:44:24: note: expanded from macro '__READ_ONCE'
   #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
                           ^
   kernel/trace/trace_object.c:298:2: note: Assuming 'debug_locks' is 0
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/lockdep.h:310:15: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                        ^~~~~~~~~~~
   include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   kernel/trace/trace_object.c:298:2: note: Left side of '&&' is false
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:27: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                                    ^
   kernel/trace/trace_object.c:298:2: note: Taking false branch
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:7: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                ^
   include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
           if (unlikely(__ret_warn_on))                                    \
           ^
   kernel/trace/trace_object.c:298:2: note: Loop condition is false.  Exiting 
loop
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:2: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
           ^
   kernel/trace/trace_object.c:300:2: note: Loop condition is false. Execution 
continues on line 307
           list_for_each_entry(test, &file->triggers, list) {
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   kernel/trace/trace_object.c:307:6: note: Assuming field 'init' is null
           if (data->ops->init) {
               ^~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:307:2: note: Taking false branch
           if (data->ops->init) {
           ^
   kernel/trace/trace_object.c:317:6: note: Assuming the condition is false
           if (trace_event_trigger_enable_disable(file, 1) < 0) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:317:2: note: Taking false branch
           if (trace_event_trigger_enable_disable(file, 1) < 0) {
           ^
   kernel/trace/trace_object.c:322:2: note: Calling 'init_trace_object'
           init_trace_object();
           ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:495:6: note: Assuming the condition is false
           if (atomic_inc_return(&trace_object_ref) != 1) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:495:2: note: Taking false branch
           if (atomic_inc_return(&trace_object_ref) != 1) {
           ^
   kernel/trace/trace_object.c:500:8: note: Calling 'init_object_pool'
           ret = init_object_pool();
                 ^~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:117:6: note: Assuming 'obj_pool' is non-null
           if (!obj_pool) {
               ^~~~~~~~~
   kernel/trace/trace_object.c:117:2: note: Taking false branch
           if (!obj_pool) {
           ^
   kernel/trace/trace_object.c:124:2: note: Loop condition is true.  Entering 
loop body
           for (i = 0; i < max_obj_pool; i++) {
           ^
   kernel/trace/trace_object.c:126:7: note: Assuming 'inst' is null
                   if (!inst) {
                       ^~~~~
   kernel/trace/trace_object.c:126:3: note: Taking true branch
                   if (!inst) {
--
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   kernel/trace/trace_object.c:99:2: note: Left side of '||' is false
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   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:302:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   kernel/trace/trace_object.c:99:2: note: Left side of '||' is true
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:38: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                                               ^
   kernel/trace/trace_object.c:99:2: note: Taking false branch
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:335:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:315:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   kernel/trace/trace_object.c:99:2: note: Loop condition is false.  Exiting 
loop
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:335:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:307:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   kernel/trace/trace_object.c:99:2: note: Use of memory after it is freed
           list_for_each_entry_rcu(inst, head, active_list)
           ^
   include/linux/rculist.h:393:9: note: expanded from macro 
'list_for_each_entry_rcu'
                   pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:50:2: note: expanded from macro 'READ_ONCE'
           __READ_ONCE(x);                                                 \
           ^
   include/asm-generic/rwonce.h:44:24: note: expanded from macro '__READ_ONCE'
   #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
                           ^
   include/linux/container_of.h:18:26: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                   ^~~
>> kernel/trace/trace_object.c:533:2: warning: Undefined or garbage value 
>> returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return ret;
           ^
   kernel/trace/trace_object.c:334:2: note: Assuming 'debug_locks' is 0
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/lockdep.h:310:15: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                        ^~~~~~~~~~~
   include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   kernel/trace/trace_object.c:334:2: note: Left side of '&&' is false
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:27: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                                    ^
   kernel/trace/trace_object.c:334:2: note: Taking false branch
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:7: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
                ^
   include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
           if (unlikely(__ret_warn_on))                                    \
           ^
   kernel/trace/trace_object.c:334:2: note: Loop condition is false.  Exiting 
loop
           lockdep_assert_held(&event_mutex);
           ^
   include/linux/lockdep.h:316:2: note: expanded from macro 
'lockdep_assert_held'
           lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
           ^
   include/linux/lockdep.h:310:2: note: expanded from macro 'lockdep_assert'
           do { WARN_ON(debug_locks && !(cond)); } while (0)
           ^
   kernel/trace/trace_object.c:336:2: note: Loop condition is true.  Entering 
loop body
           list_for_each_entry(data, &file->triggers, list) {
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   kernel/trace/trace_object.c:337:7: note: Assuming 
'data->cmd_ops->trigger_type' is equal to 'test->cmd_ops->trigger_type'
                   if (data->cmd_ops->trigger_type == 
test->cmd_ops->trigger_type) {
                       
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:337:3: note: Taking true branch
                   if (data->cmd_ops->trigger_type == 
test->cmd_ops->trigger_type) {
                   ^
   kernel/trace/trace_object.c:342:4: note:  Execution continues on line 346
                           break;
                           ^
   kernel/trace/trace_object.c:346:6: note: 'unregistered' is true
           if (unregistered && data->ops->free) {
               ^~~~~~~~~~~~
   kernel/trace/trace_object.c:346:6: note: Left side of '&&' is true
   kernel/trace/trace_object.c:346:22: note: Assuming field 'free' is non-null
           if (unregistered && data->ops->free) {
                               ^~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:346:2: note: Taking true branch
           if (unregistered && data->ops->free) {
           ^
   kernel/trace/trace_object.c:348:3: note: Calling 'exit_trace_object'
                   exit_trace_object();
                   ^~~~~~~~~~~~~~~~~~~
   kernel/trace/trace_object.c:516:2: note: 'ret' declared without an initial 
value
           int ret;
           ^~~~~~~
   kernel/trace/trace_object.c:518:19: note: Assuming the condition is true
           if (WARN_ON_ONCE(atomic_read(&trace_object_ref) <= 0))
                            ^
   include/asm-generic/bug.h:104:25: note: expanded from macro 'WARN_ON_ONCE'
           int __ret_warn_on = !!(condition);                      \
                                  ^~~~~~~~~
   kernel/trace/trace_object.c:518:6: note: Taking true branch
           if (WARN_ON_ONCE(atomic_read(&trace_object_ref) <= 0))
               ^
   include/asm-generic/bug.h:105:2: note: expanded from macro 'WARN_ON_ONCE'
           if (unlikely(__ret_warn_on))                            \
           ^
   kernel/trace/trace_object.c:518:6: note: Loop condition is false.  Exiting 
loop
           if (WARN_ON_ONCE(atomic_read(&trace_object_ref) <= 0))
               ^
   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_object.c:518:6: note: Loop condition is false.  Exiting 
loop

vim +99 kernel/trace/trace_object.c

88ea43d691b0980 Jeff Xie 2021-11-30   94  
88ea43d691b0980 Jeff Xie 2021-11-30   95  static inline void 
free_active_list_objects(struct list_head *head)
88ea43d691b0980 Jeff Xie 2021-11-30   96  {
88ea43d691b0980 Jeff Xie 2021-11-30   97        struct object_instance *inst;
88ea43d691b0980 Jeff Xie 2021-11-30   98  
88ea43d691b0980 Jeff Xie 2021-11-30  @99        list_for_each_entry_rcu(inst, 
head, active_list)
88ea43d691b0980 Jeff Xie 2021-11-30  100                kfree(inst);
88ea43d691b0980 Jeff Xie 2021-11-30  101  }
88ea43d691b0980 Jeff Xie 2021-11-30  102  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to