CC: [email protected]
CC: [email protected]
TO: Vlastimil Babka <[email protected]>
CC: Marco Elver <[email protected]>
CC: Colin Ian King <[email protected]>
CC: Eric Dumazet <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   26291c54e111ff6ba87a164d85d4a4e134b7315c
commit: 2dba5eb1c73b6ba2988ced07250edeac0f8cbf5a lib/stackdepot: allow optional 
init and stack_table allocation by kvmalloc()
date:   11 days ago
:::::: branch date: 3 days ago
:::::: commit date: 11 days ago
config: nds32-randconfig-s031-20220202 
(https://download.01.org/0day-ci/archive/20220202/[email protected]/config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2dba5eb1c73b6ba2988ced07250edeac0f8cbf5a
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 2dba5eb1c73b6ba2988ced07250edeac0f8cbf5a
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=nds32 
SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)
   lib/ref_tracker.c: note: in included file (through include/linux/ww_mutex.h, 
include/linux/seqlock.h, include/linux/mmzone.h, ...):
   include/linux/rtmutex.h:68:58: sparse: sparse: Expected ) in function 
declarator
   include/linux/rtmutex.h:68:58: sparse: sparse: got $
   lib/ref_tracker.c: note: in included file:
   include/linux/stacktrace.h:91:54: sparse: sparse: Expected ) in function 
declarator
   include/linux/stacktrace.h:91:54: sparse: sparse: got $
   include/linux/stacktrace.h:93:62: sparse: sparse: Expected ) in function 
declarator
   include/linux/stacktrace.h:93:62: sparse: sparse: got $
   include/linux/stacktrace.h:103:69: sparse: sparse: Expected ) in function 
declarator
   include/linux/stacktrace.h:103:69: sparse: sparse: got $
   include/linux/stacktrace.h:108:1: sparse: sparse: Expected ; at the end of 
type declaration
   include/linux/stacktrace.h:108:1: sparse: sparse: got }
   lib/ref_tracker.c:15:1: sparse: sparse: Expected ; at the end of type 
declaration
   lib/ref_tracker.c:15:1: sparse: sparse: got }
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
>> lib/ref_tracker.c:24:9: sparse: sparse: static assertion failed: "pointer 
>> type mismatch in container_of()"
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: static assertion failed: "pointer 
type mismatch in container_of()"
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: static assertion failed: "pointer 
type mismatch in container_of()"
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:132:27: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:132:27: sparse: sparse: static assertion failed: "pointer 
type mismatch in container_of()"
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
>> lib/ref_tracker.c:24:9: sparse: sparse: unknown member
>> lib/ref_tracker.c:24:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
>> lib/ref_tracker.c:24:9: sparse: sparse: cast from unknown type
>> lib/ref_tracker.c:24:9: sparse: sparse: unknown member
>> lib/ref_tracker.c:24:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:25:34: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:24:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
>> lib/ref_tracker.c:24:9: sparse: sparse: cast from unknown type
>> lib/ref_tracker.c:24:9: sparse: sparse: unknown member
>> lib/ref_tracker.c:24:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: unknown member
   lib/ref_tracker.c:29:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:29:9: sparse: sparse: unknown member
   lib/ref_tracker.c:29:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:31:28: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:32:50: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:34:34: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:29:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:29:9: sparse: sparse: unknown member
   lib/ref_tracker.c:29:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: unknown member
   lib/ref_tracker.c:51:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:54:36: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:55:58: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:51:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:51:9: sparse: sparse: unknown member
   lib/ref_tracker.c:51:9: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:85:16: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:88:26: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:112:20: sparse: sparse: using member 'dead' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:114:28: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:116:50: sparse: sparse: using member 'alloc_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:118:28: sparse: sparse: using member 'free_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:120:50: sparse: sparse: using member 'free_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:126:16: sparse: sparse: using member 'dead' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:128:16: sparse: sparse: using member 'free_stack_handle' 
in incomplete struct ref_tracker
   lib/ref_tracker.c:130:32: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c:132:27: sparse: sparse: unknown member
   lib/ref_tracker.c:132:27: sparse: sparse: cast from unknown type
   lib/ref_tracker.c:133:34: sparse: sparse: using member 'head' in incomplete 
struct ref_tracker
   lib/ref_tracker.c: note: in included file (through include/linux/irqflags.h, 
include/asm-generic/cmpxchg.h, arch/nds32/include/generated/asm/cmpxchg.h, ...):
   arch/nds32/include/asm/irqflags.h:15:17: sparse: sparse: undefined 
identifier '__builtin_nds32_mfsr'
   lib/ref_tracker.c: note: in included file (through 
arch/nds32/include/asm/irqflags.h, include/linux/irqflags.h, 
include/asm-generic/cmpxchg.h, ...):
   arch/nds32/include/asm/nds32.h:32:9: sparse: sparse: undefined identifier 
'__builtin_nds32_gie_dis'
   arch/nds32/include/asm/nds32.h:26:9: sparse: sparse: undefined identifier 
'__builtin_nds32_gie_en'

vim +24 lib/ref_tracker.c

4e66934eaadc83 Eric Dumazet 2021-12-04  16  
4e66934eaadc83 Eric Dumazet 2021-12-04  17  void ref_tracker_dir_exit(struct 
ref_tracker_dir *dir)
4e66934eaadc83 Eric Dumazet 2021-12-04  18  {
4e66934eaadc83 Eric Dumazet 2021-12-04  19      struct ref_tracker *tracker, *n;
4e66934eaadc83 Eric Dumazet 2021-12-04  20      unsigned long flags;
4e66934eaadc83 Eric Dumazet 2021-12-04  21      bool leak = false;
4e66934eaadc83 Eric Dumazet 2021-12-04  22  
4e66934eaadc83 Eric Dumazet 2021-12-04  23      spin_lock_irqsave(&dir->lock, 
flags);
4e66934eaadc83 Eric Dumazet 2021-12-04 @24      
list_for_each_entry_safe(tracker, n, &dir->quarantine, head) {
4e66934eaadc83 Eric Dumazet 2021-12-04  25              
list_del(&tracker->head);
4e66934eaadc83 Eric Dumazet 2021-12-04  26              kfree(tracker);
4e66934eaadc83 Eric Dumazet 2021-12-04  27              dir->quarantine_avail++;
4e66934eaadc83 Eric Dumazet 2021-12-04  28      }
4e66934eaadc83 Eric Dumazet 2021-12-04  29      
list_for_each_entry_safe(tracker, n, &dir->list, head) {
4e66934eaadc83 Eric Dumazet 2021-12-04  30              pr_err("leaked 
reference.\n");
4e66934eaadc83 Eric Dumazet 2021-12-04  31              if 
(tracker->alloc_stack_handle)
4e66934eaadc83 Eric Dumazet 2021-12-04  32                      
stack_depot_print(tracker->alloc_stack_handle);
4e66934eaadc83 Eric Dumazet 2021-12-04  33              leak = true;
4e66934eaadc83 Eric Dumazet 2021-12-04  34              
list_del(&tracker->head);
4e66934eaadc83 Eric Dumazet 2021-12-04  35              kfree(tracker);
4e66934eaadc83 Eric Dumazet 2021-12-04  36      }
4e66934eaadc83 Eric Dumazet 2021-12-04  37      
spin_unlock_irqrestore(&dir->lock, flags);
4e66934eaadc83 Eric Dumazet 2021-12-04  38      WARN_ON_ONCE(leak);
4e66934eaadc83 Eric Dumazet 2021-12-04  39      
WARN_ON_ONCE(refcount_read(&dir->untracked) != 1);
4e66934eaadc83 Eric Dumazet 2021-12-04  40  }
4e66934eaadc83 Eric Dumazet 2021-12-04  41  EXPORT_SYMBOL(ref_tracker_dir_exit);
4e66934eaadc83 Eric Dumazet 2021-12-04  42  

:::::: The code at line 24 was first introduced by commit
:::::: 4e66934eaadc83b27ada8d42b60894018f3bfabf lib: add reference counting 
tracking infrastructure

:::::: TO: Eric Dumazet <[email protected]>
:::::: CC: Jakub Kicinski <[email protected]>

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

Reply via email to