CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Alexander Mikhalitsyn <[email protected]>
CC: Manfred Spraul <[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:   4f0dda359c4563cbb1b0f97b0dbbcdc553156541
commit: 85b6d24646e4125c591639841169baa98a2da503 shm: extend forced shm destroy 
to support objects from several IPC nses
date:   7 days ago
:::::: branch date: 3 hours ago
:::::: commit date: 7 days ago
config: riscv-randconfig-c006-20211126 
(https://download.01.org/0day-ci/archive/20211128/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
5162b558d8c0b542e752b037e72a69d5fd51eb1e)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=85b6d24646e4125c591639841169baa98a2da503
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 85b6d24646e4125c591639841169baa98a2da503
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
   fs/ext4/readpage.c:339:7: note: 'first_hole' is equal to 'blocks_per_page'
                   if (first_hole != blocks_per_page) {
                       ^~~~~~~~~~
   fs/ext4/readpage.c:339:3: note: Taking false branch
                   if (first_hole != blocks_per_page) {
                   ^
   fs/ext4/readpage.c:350:14: note: 'fully_mapped' is 1
                   } else if (fully_mapped) {
                              ^~~~~~~~~~~~
   fs/ext4/readpage.c:350:10: note: Taking true branch
                   } else if (fully_mapped) {
                          ^
   fs/ext4/readpage.c:353:7: note: 'fully_mapped' is 1
                   if (fully_mapped && blocks_per_page == 1 &&
                       ^~~~~~~~~~~~
   fs/ext4/readpage.c:353:7: note: Left side of '&&' is true
   fs/ext4/readpage.c:353:23: note: 'blocks_per_page' is not equal to 1
                   if (fully_mapped && blocks_per_page == 1 &&
                                       ^~~~~~~~~~~~~~~
   fs/ext4/readpage.c:353:44: note: Left side of '&&' is false
                   if (fully_mapped && blocks_per_page == 1 &&
                                                            ^
   fs/ext4/readpage.c:363:7: note: 'bio' is null
                   if (bio && (last_block_in_bio != blocks[0] - 1 ||
                       ^~~
   fs/ext4/readpage.c:363:11: note: Left side of '&&' is false
                   if (bio && (last_block_in_bio != blocks[0] - 1 ||
                           ^
   fs/ext4/readpage.c:369:7: note: 'bio' is equal to NULL
                   if (bio == NULL) {
                       ^~~
   fs/ext4/readpage.c:369:3: note: Taking true branch
                   if (bio == NULL) {
                   ^
   fs/ext4/readpage.c:379:39: note: The left operand of '<<' is a garbage value
                           bio->bi_iter.bi_sector = blocks[0] << (blkbits - 9);
                                                    ~~~~~~~~~ ^
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   8 warnings generated.
>> ipc/shm.c:52:8: warning: Excessive padding in 'struct shmid_kernel' (64 
>> padding bytes, where 0 is optimal). 
   Optimal fields order: 
   shm_perm, 
   shm_atim, 
   shm_dtim, 
   shm_ctim, 
   shm_file, 
   shm_nattch, 
   shm_segsz, 
   shm_cprid, 
   shm_lprid, 
   mlock_ucounts, 
   shm_creator, 
   ns, 
   shm_clist, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct shmid_kernel /* private to the kernel */
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ipc/shm.c:52:8: note: Excessive padding in 'struct shmid_kernel' (64 padding 
bytes, where 0 is optimal). Optimal fields order: shm_perm, shm_atim, shm_dtim, 
shm_ctim, shm_file, shm_nattch, shm_segsz, shm_cprid, shm_lprid, mlock_ucounts, 
shm_creator, ns, shm_clist, consider reordering the fields or adding explicit 
padding members
   struct shmid_kernel /* private to the kernel */
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   11 warnings generated.
   Suppressed 11 warnings (11 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   11 warnings generated.
   Suppressed 11 warnings (11 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.
   7 warnings generated.
   drivers/base/bus.c:873:18: warning: Access to field 'drivers_kset' results 
in a dereference of a null pointer (loaded from field 'p') 
[clang-analyzer-core.NullDereference]
           kset_unregister(bus->p->drivers_kset);
                           ^
   drivers/base/bus.c:1139:9: note: Calling 'subsys_register'
           return subsys_register(subsys, groups, &system_kset->kobj);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/base/bus.c:1083:8: note: Calling 'bus_register'
           err = bus_register(subsys);
                 ^~~~~~~~~~~~~~~~~~~~
   drivers/base/bus.c:788:6: note: Assuming 'priv' is non-null
           if (!priv)
               ^~~~~
   drivers/base/bus.c:788:2: note: Taking false branch
           if (!priv)
           ^
   drivers/base/bus.c:794:2: note: Loop condition is false.  Exiting loop
           BLOCKING_INIT_NOTIFIER_HEAD(&priv->bus_notifier);
           ^
   include/linux/notifier.h:85:3: note: expanded from macro 
'BLOCKING_INIT_NOTIFIER_HEAD'
                   init_rwsem(&(name)->rwsem);     \
                   ^
   include/linux/rwsem.h:106:30: note: expanded from macro 'init_rwsem'
   #define init_rwsem(sem)                                         \

vim +52 ipc/shm.c

^1da177e4c3f41 Linus Torvalds        2005-04-16  51  
a2e102cd3cdd8b Eric W. Biederman     2018-03-22 @52  struct shmid_kernel /* 
private to the kernel */
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  53  {
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  54     struct kern_ipc_perm    
shm_perm;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  55     struct file             
*shm_file;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  56     unsigned long           
shm_nattch;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  57     unsigned long           
shm_segsz;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  58     time64_t                
shm_atim;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  59     time64_t                
shm_dtim;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  60     time64_t                
shm_ctim;
98f929b1bd4d0b Eric W. Biederman     2018-03-23  61     struct pid              
*shm_cprid;
98f929b1bd4d0b Eric W. Biederman     2018-03-23  62     struct pid              
*shm_lprid;
d7c9e99aee48e6 Alexey Gladkov        2021-04-22  63     struct ucounts          
*mlock_ucounts;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  64  
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  65     /*
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  66      * The task created the 
shm object, for
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  67      * 
task_lock(shp->shm_creator)
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  68      */
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  69     struct task_struct      
*shm_creator;
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  70  
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  71     /*
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  72      * List by creator. 
task_lock(->shm_creator) required for read/write.
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  73      * If list_empty(), 
then the creator is dead already.
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  74      */
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  75     struct list_head        
shm_clist;
85b6d24646e412 Alexander Mikhalitsyn 2021-11-19  76     struct ipc_namespace    
*ns;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  77  } __randomize_layout;
a2e102cd3cdd8b Eric W. Biederman     2018-03-22  78  

:::::: The code at line 52 was first introduced by commit
:::::: a2e102cd3cdd8b7a14e08716510707b15802073f shm: Move struct shmid_kernel 
into ipc/shm.c

:::::: TO: Eric W. Biederman <[email protected]>
:::::: CC: Eric W. Biederman <[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