CC: [email protected]
CC: [email protected]
CC: "Darrick J. Wong" <[email protected]>
CC: [email protected]
TO: "Darrick J. Wong" <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git 
vectorized-scrub
head:   653d694bd02b6f3aa956b6efe9476a7b948faa96
commit: d3c651c31aab150baf49475b2f2fc87eb852c229 [71/306] xfs: repair inode 
block maps
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: x86_64-randconfig-c001-20210723 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
3f2c1e99e44d028d5e9dd685f3c568f2661f2f68)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/commit/?id=d3c651c31aab150baf49475b2f2fc87eb852c229
        git remote add djwong-xfs 
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
        git fetch --no-tags djwong-xfs vectorized-scrub
        git checkout d3c651c31aab150baf49475b2f2fc87eb852c229
        # save the attached .config 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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   fs/xfs/xfs_fsmap.c:615:2: note: Assuming 'pag' is not equal to null
           for_each_perag_range(mp, start_ag, end_ag, pag) {
           ^
   fs/xfs/libxfs/xfs_ag.h:140:3: note: expanded from macro 
'for_each_perag_range'
                   (pag) != NULL && (next_agno) <= (end_agno); \
                   ^~~~~~~~~~~~~
   fs/xfs/xfs_fsmap.c:615:2: note: Left side of '&&' is true
           for_each_perag_range(mp, start_ag, end_ag, pag) {
           ^
   fs/xfs/libxfs/xfs_ag.h:140:3: note: expanded from macro 
'for_each_perag_range'
                   (pag) != NULL && (next_agno) <= (end_agno); \
                   ^
   fs/xfs/xfs_fsmap.c:615:2: note: Assuming 'start_ag' is <= 'end_ag'
           for_each_perag_range(mp, start_ag, end_ag, pag) {
           ^
   fs/xfs/libxfs/xfs_ag.h:140:20: note: expanded from macro 
'for_each_perag_range'
                   (pag) != NULL && (next_agno) <= (end_agno); \
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/xfs_fsmap.c:615:2: note: Loop condition is true.  Entering loop body
           for_each_perag_range(mp, start_ag, end_ag, pag) {
           ^
   fs/xfs/libxfs/xfs_ag.h:139:2: note: expanded from macro 
'for_each_perag_range'
           for ((pag) = xfs_perag_get((mp), (next_agno)); \
           ^
   fs/xfs/xfs_fsmap.c:621:7: note: Assuming 'end_ag' is not equal to field 
'pag_agno'
                   if (pag->pag_agno == end_ag) {
                       ^~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/xfs_fsmap.c:621:3: note: Taking false branch
                   if (pag->pag_agno == end_ag) {
                   ^
   fs/xfs/xfs_fsmap.c:632:7: note: 'bt_cur' is null
                   if (bt_cur) {
                       ^~~~~~
   fs/xfs/xfs_fsmap.c:632:3: note: Taking false branch
                   if (bt_cur) {
                   ^
   fs/xfs/xfs_fsmap.c:641:7: note: Assuming 'error' is 0
                   if (error)
                       ^~~~~
   fs/xfs/xfs_fsmap.c:641:3: note: Taking false branch
                   if (error)
                   ^
   fs/xfs/xfs_fsmap.c:649:11: note: Calling 'xfs_getfsmap_datadev_bnobt_query'
                   error = query_fn(tp, info, &bt_cur, priv);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/xfs_fsmap.c:738:6: note: Assuming field 'last' is true
           if (info->last)
               ^~~~~~~~~~
   fs/xfs/xfs_fsmap.c:738:2: note: Taking true branch
           if (info->last)
           ^
   fs/xfs/xfs_fsmap.c:739:44: note: Passing null pointer value via 1st 
parameter 'cur'
                   return xfs_getfsmap_datadev_bnobt_helper(*curpp, &key[1], 
info);
                                                            ^~~~~~
   fs/xfs/xfs_fsmap.c:739:10: note: Calling 'xfs_getfsmap_datadev_bnobt_helper'
                   return xfs_getfsmap_datadev_bnobt_helper(*curpp, &key[1], 
info);
                          
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/xfs/xfs_fsmap.c:371:26: note: Access to field 'bc_mp' results in a 
dereference of a null pointer (loaded from variable 'cur')
           struct xfs_mount                *mp = cur->bc_mp;
                                                 ^~~
   Suppressed 4 warnings (4 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.
   fs/xfs/libxfs/xfs_attr_leaf.c:2248:29: warning: Value stored to 'drop_leaf' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_attr_leafblock *drop_leaf = drop_blk->bp->b_addr;
                                      ^~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:2248:29: note: Value stored to 'drop_leaf' 
during its initialization is never read
           struct xfs_attr_leafblock *drop_leaf = drop_blk->bp->b_addr;
                                      ^~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:2249:29: warning: Value stored to 'save_leaf' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct xfs_attr_leafblock *save_leaf = save_blk->bp->b_addr;
                                      ^~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_attr_leaf.c:2249:29: note: Value stored to 'save_leaf' 
during its initialization is never read
           struct xfs_attr_leafblock *save_leaf = save_blk->bp->b_addr;
                                      ^~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   6 warnings generated.
   fs/xfs/libxfs/xfs_bmap.c:850:2: warning: Value stored to 'error' is never 
read [clang-analyzer-deadcode.DeadStores]
           error = 0;
           ^       ~
   fs/xfs/libxfs/xfs_bmap.c:850:2: note: Value stored to 'error' is never read
           error = 0;
           ^       ~
   fs/xfs/libxfs/xfs_bmap.c:5082:2: warning: Value stored to 'qfield' is never 
read [clang-analyzer-deadcode.DeadStores]
           qfield = 0;
           ^        ~
   fs/xfs/libxfs/xfs_bmap.c:5082:2: note: Value stored to 'qfield' is never read
           qfield = 0;
           ^        ~
   Suppressed 4 warnings (4 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.
>> fs/xfs/libxfs/xfs_bmap_btree.c:646:9: warning: Assigned value is garbage or 
>> undefined [clang-analyzer-core.uninitialized.Assign]
                   flags |= extflag[whichfork];
                         ^  ~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_bmap_btree.c:632:2: note: Assuming the condition is false
           ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
           ^
   fs/xfs/xfs_linux.h:215:3: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ^~~~~~~~~~~~
   include/linux/compiler.h:77:38: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                             ^~~~
   fs/xfs/libxfs/xfs_bmap_btree.c:632:2: note: '?' condition is true
           ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
           ^
   fs/xfs/xfs_linux.h:215:3: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ^
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^
   fs/xfs/libxfs/xfs_bmap_btree.c:633:9: note: Assuming 'whichfork' is equal to 
2
           ASSERT(whichfork != XFS_COW_FORK);
                  ^
   fs/xfs/xfs_linux.h:215:10: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ~~~~~~~^~~~~
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   fs/xfs/libxfs/xfs_bmap_btree.c:633:2: note: '?' condition is false
           ASSERT(whichfork != XFS_COW_FORK);
           ^
   fs/xfs/xfs_linux.h:215:3: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ^
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^
   fs/xfs/libxfs/xfs_bmap_btree.c:640:8: note: 'whichfork' is not equal to 0
           ifp = XFS_IFORK_PTR(cur->bc_ino.ip, whichfork);
                 ^
   fs/xfs/libxfs/xfs_inode_fork.h:98:3: note: expanded from macro 
'XFS_IFORK_PTR'
           ((w) == XFS_DATA_FORK ? \
            ^~~
   fs/xfs/libxfs/xfs_bmap_btree.c:640:8: note: '?' condition is false
           ifp = XFS_IFORK_PTR(cur->bc_ino.ip, whichfork);
                 ^
   fs/xfs/libxfs/xfs_inode_fork.h:98:3: note: expanded from macro 
'XFS_IFORK_PTR'
           ((w) == XFS_DATA_FORK ? \
            ^
   fs/xfs/libxfs/xfs_bmap_btree.c:640:8: note: 'whichfork' is not equal to 1
           ifp = XFS_IFORK_PTR(cur->bc_ino.ip, whichfork);
                 ^
   fs/xfs/libxfs/xfs_inode_fork.h:100:4: note: expanded from macro 
'XFS_IFORK_PTR'
                   ((w) == XFS_ATTR_FORK ? \
                    ^~~
   fs/xfs/libxfs/xfs_bmap_btree.c:640:8: note: '?' condition is false
           ifp = XFS_IFORK_PTR(cur->bc_ino.ip, whichfork);
                 ^
   fs/xfs/libxfs/xfs_inode_fork.h:100:4: note: expanded from macro 
'XFS_IFORK_PTR'
                   ((w) == XFS_ATTR_FORK ? \
                    ^
   fs/xfs/libxfs/xfs_bmap_btree.c:644:2: note: Control jumps to 'case 
XFS_DINODE_FMT_EXTENTS:'  at line 645
           switch (ifp->if_format) {
           ^
   fs/xfs/libxfs/xfs_bmap_btree.c:646:9: note: Assigned value is garbage or 
undefined
                   flags |= extflag[whichfork];
                         ^  ~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_bmap_btree.c:649:9: warning: Assigned value is garbage or 
undefined [clang-analyzer-core.uninitialized.Assign]
                   flags |= brootflag[whichfork];
                         ^  ~~~~~~~~~~~~~~~~~~~~
   fs/xfs/libxfs/xfs_bmap_btree.c:632:2: note: Assuming the condition is false
           ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
           ^
   fs/xfs/xfs_linux.h:215:3: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ^~~~~~~~~~~~
   include/linux/compiler.h:77:38: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                             ^~~~
   fs/xfs/libxfs/xfs_bmap_btree.c:632:2: note: '?' condition is true
           ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
           ^
   fs/xfs/xfs_linux.h:215:3: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ^
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^
   fs/xfs/libxfs/xfs_bmap_btree.c:633:9: note: Assuming 'whichfork' is equal to 
2
           ASSERT(whichfork != XFS_COW_FORK);
                  ^
   fs/xfs/xfs_linux.h:215:10: note: expanded from macro 'ASSERT'
           (likely(expr) ? (void)0 : asswarn(NULL, #expr, __FILE__, __LINE__))
            ~~~~~~~^~~~~
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   fs/xfs/libxfs/xfs_bmap_btree.c:633:2: note: '?' condition is false
           ASSERT(whichfork != XFS_COW_FORK);

vim +646 fs/xfs/libxfs/xfs_bmap_btree.c

d3c651c31aab15 Darrick J. Wong 2021-01-05  613  
d3c651c31aab15 Darrick J. Wong 2021-01-05  614  /*
d3c651c31aab15 Darrick J. Wong 2021-01-05  615   * Swap in the new inode fork 
root.  Once we pass this point the newly rebuilt
d3c651c31aab15 Darrick J. Wong 2021-01-05  616   * mappings are in place and we 
have to kill off any old btree blocks.
d3c651c31aab15 Darrick J. Wong 2021-01-05  617   */
d3c651c31aab15 Darrick J. Wong 2021-01-05  618  void
d3c651c31aab15 Darrick J. Wong 2021-01-05  619  xfs_bmbt_commit_staged_btree(
d3c651c31aab15 Darrick J. Wong 2021-01-05  620          struct xfs_btree_cur    
*cur,
d3c651c31aab15 Darrick J. Wong 2021-01-05  621          struct xfs_trans        
*tp,
d3c651c31aab15 Darrick J. Wong 2021-01-05  622          int                     
whichfork)
d3c651c31aab15 Darrick J. Wong 2021-01-05  623  {
d3c651c31aab15 Darrick J. Wong 2021-01-05  624          struct xbtree_ifakeroot 
*ifake = cur->bc_ino.ifake;
d3c651c31aab15 Darrick J. Wong 2021-01-05  625          struct xfs_ifork        
*ifp;
d3c651c31aab15 Darrick J. Wong 2021-01-05  626          static const short      
brootflag[2] =
d3c651c31aab15 Darrick J. Wong 2021-01-05  627                  { 
XFS_ILOG_DBROOT, XFS_ILOG_ABROOT };
d3c651c31aab15 Darrick J. Wong 2021-01-05  628          static const short      
extflag[2] =
d3c651c31aab15 Darrick J. Wong 2021-01-05  629                  { 
XFS_ILOG_DEXT, XFS_ILOG_AEXT };
d3c651c31aab15 Darrick J. Wong 2021-01-05  630          int                     
flags = XFS_ILOG_CORE;
d3c651c31aab15 Darrick J. Wong 2021-01-05  631  
d3c651c31aab15 Darrick J. Wong 2021-01-05  632          ASSERT(cur->bc_flags & 
XFS_BTREE_STAGING);
d3c651c31aab15 Darrick J. Wong 2021-01-05  633          ASSERT(whichfork != 
XFS_COW_FORK);
d3c651c31aab15 Darrick J. Wong 2021-01-05  634  
d3c651c31aab15 Darrick J. Wong 2021-01-05  635          /*
d3c651c31aab15 Darrick J. Wong 2021-01-05  636           * Free any resources 
hanging off the real fork, then shallow-copy the
d3c651c31aab15 Darrick J. Wong 2021-01-05  637           * staging fork's 
contents into the real fork to transfer everything
d3c651c31aab15 Darrick J. Wong 2021-01-05  638           * we just built.
d3c651c31aab15 Darrick J. Wong 2021-01-05  639           */
d3c651c31aab15 Darrick J. Wong 2021-01-05  640          ifp = 
XFS_IFORK_PTR(cur->bc_ino.ip, whichfork);
d3c651c31aab15 Darrick J. Wong 2021-01-05  641          xfs_idestroy_fork(ifp);
d3c651c31aab15 Darrick J. Wong 2021-01-05  642          memcpy(ifp, 
ifake->if_fork, sizeof(struct xfs_ifork));
d3c651c31aab15 Darrick J. Wong 2021-01-05  643  
d3c651c31aab15 Darrick J. Wong 2021-01-05  644          switch (ifp->if_format) 
{
d3c651c31aab15 Darrick J. Wong 2021-01-05  645          case 
XFS_DINODE_FMT_EXTENTS:
d3c651c31aab15 Darrick J. Wong 2021-01-05 @646                  flags |= 
extflag[whichfork];
d3c651c31aab15 Darrick J. Wong 2021-01-05  647                  break;
d3c651c31aab15 Darrick J. Wong 2021-01-05  648          case 
XFS_DINODE_FMT_BTREE:
d3c651c31aab15 Darrick J. Wong 2021-01-05  649                  flags |= 
brootflag[whichfork];
d3c651c31aab15 Darrick J. Wong 2021-01-05  650                  break;
d3c651c31aab15 Darrick J. Wong 2021-01-05  651          default:
d3c651c31aab15 Darrick J. Wong 2021-01-05  652                  ASSERT(0);
d3c651c31aab15 Darrick J. Wong 2021-01-05  653                  break;
d3c651c31aab15 Darrick J. Wong 2021-01-05  654          }
d3c651c31aab15 Darrick J. Wong 2021-01-05  655          xfs_trans_log_inode(tp, 
cur->bc_ino.ip, flags);
d3c651c31aab15 Darrick J. Wong 2021-01-05  656          
xfs_btree_commit_ifakeroot(cur, tp, whichfork, &xfs_bmbt_ops);
d3c651c31aab15 Darrick J. Wong 2021-01-05  657  }
d3c651c31aab15 Darrick J. Wong 2021-01-05  658  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to