CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: David Howells <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git 
fscache-iter-2
head:   7c7521adffeb04466a42e8e1956353b9d9038d02
commit: f463b2680fc3404d89d7186c12fbb9533e48b1cc [41/75] fscache: Replace the 
object management state machine
:::::: branch date: 2 days ago
:::::: commit date: 9 weeks ago
config: riscv-randconfig-c006-20210910 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
261cbe98c38f8c1ee1a482fe76511110e790f58a)
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/dhowells/linux-fs.git/commit/?id=f463b2680fc3404d89d7186c12fbb9533e48b1cc
        git remote add dhowells-fs 
https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
        git fetch --no-tags dhowells-fs fscache-iter-2
        git checkout f463b2680fc3404d89d7186c12fbb9533e48b1cc
        # save the attached .config 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/exfat/dir.c:247:6: note: 'err' is 0
           if (err)
               ^~~
   fs/exfat/dir.c:247:2: note: Taking false branch
           if (err)
           ^
   fs/exfat/dir.c:250:6: note: Assuming field 'flags' is not equal to 
ALLOC_NO_FAT_CHAIN
           if (ei->flags == ALLOC_NO_FAT_CHAIN && cpos >= i_size_read(inode))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/exfat/dir.c:250:38: note: Left side of '&&' is false
           if (ei->flags == ALLOC_NO_FAT_CHAIN && cpos >= i_size_read(inode))
                                               ^
   fs/exfat/dir.c:253:8: note: Calling 'exfat_readdir'
           err = exfat_readdir(inode, &cpos, &de);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/exfat/dir.c:78:6: note: Assuming field 'type' is equal to TYPE_DIR
           if (ei->type != TYPE_DIR)
               ^~~~~~~~~~~~~~~~~~~~
   fs/exfat/dir.c:78:2: note: Taking false branch
           if (ei->type != TYPE_DIR)
           ^
   fs/exfat/dir.c:81:6: note: Assuming the condition is true
           if (ei->entry == -1)
               ^~~~~~~~~~~~~~~
   fs/exfat/dir.c:81:2: note: Taking true branch
           if (ei->entry == -1)
           ^
   fs/exfat/dir.c:88:26: note: '?' condition is false
           dentries_per_clu_bits = ilog2(dentries_per_clu);
                                   ^
   include/linux/log2.h:158:2: note: expanded from macro 'ilog2'
           __builtin_constant_p(n) ?       \
           ^
   fs/exfat/dir.c:88:26: note: '?' condition is true
           dentries_per_clu_bits = ilog2(dentries_per_clu);
                                   ^
   include/linux/log2.h:161:2: note: expanded from macro 'ilog2'
           (sizeof(n) <= 4) ?              \
           ^
   fs/exfat/dir.c:88:26: note: Calling '__ilog2_u32'
           dentries_per_clu_bits = ilog2(dentries_per_clu);
                                   ^
   include/linux/log2.h:162:2: note: expanded from macro 'ilog2'
           __ilog2_u32(n) :                \
           ^~~~~~~~~~~~~~
   include/linux/log2.h:24:2: note: Returning the value -1
           return fls(n) - 1;
           ^~~~~~~~~~~~~~~~~
   fs/exfat/dir.c:88:26: note: Returning from '__ilog2_u32'
           dentries_per_clu_bits = ilog2(dentries_per_clu);
                                   ^
   include/linux/log2.h:162:2: note: expanded from macro 'ilog2'
           __ilog2_u32(n) :                \
           ^~~~~~~~~~~~~~
   fs/exfat/dir.c:88:2: note: The value -1 is assigned to 
'dentries_per_clu_bits'
           dentries_per_clu_bits = ilog2(dentries_per_clu);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/exfat/dir.c:89:31: note: Assuming '__UNIQUE_ID___x264' is >= 
'__UNIQUE_ID___y265'
           max_dentries = (unsigned int)min_t(u64, MAX_EXFAT_DENTRIES,
                                        ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   fs/exfat/dir.c:89:31: note: '?' condition is false
           max_dentries = (unsigned int)min_t(u64, MAX_EXFAT_DENTRIES,
                                        ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   fs/exfat/dir.c:92:22: note: The result of the right shift is undefined 
because the right operand is negative
           clu_offset = dentry >> dentries_per_clu_bits;
                               ^  ~~~~~~~~~~~~~~~~~~~~~
   Suppressed 9 warnings (2 in non-user code, 7 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   Suppressed 10 warnings (3 in non-user code, 7 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   Suppressed 10 warnings (3 in non-user code, 7 with check filters).
   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.
>> fs/fscache/volume.c:286:2: warning: Use of memory after it is freed 
>> [clang-analyzer-unix.Malloc]
           return volume;
           ^      ~~~~~~
   fs/fscache/volume.c:276:11: note: Calling 'fscache_alloc_volume'
           volume = fscache_alloc_volume(volume_key, cache_name, 
coherency_data);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:164:6: note: Assuming 'cache_name' is non-null
           if (!cache_name)
               ^~~~~~~~~~~
   fs/fscache/volume.c:164:2: note: Taking false branch
           if (!cache_name)
           ^
   fs/fscache/volume.c:168:6: note: Assuming 'cache' is non-null
           if (!cache)
               ^~~~~~
   fs/fscache/volume.c:168:2: note: Taking false branch
           if (!cache)
           ^
   fs/fscache/volume.c:172:6: note: Assuming 'volume' is non-null
           if (!volume)
               ^~~~~~~
   fs/fscache/volume.c:172:2: note: Taking false branch
           if (!volume)
           ^
   fs/fscache/volume.c:178:2: note: Loop condition is false.  Exiting loop
           INIT_WORK(&volume->work, fscache_create_volume_work);
           ^
   include/linux/workqueue.h:250:2: note: expanded from macro 'INIT_WORK'
           __INIT_WORK((_work), (_func), 0)
           ^
   include/linux/workqueue.h:241:2: note: expanded from macro '__INIT_WORK'
           do {                                                            \
           ^
   fs/fscache/volume.c:180:2: note: Loop condition is false.  Exiting loop
           spin_lock_init(&volume->lock);
           ^
   include/linux/spinlock.h:344:34: note: expanded from macro 'spin_lock_init'
   # define spin_lock_init(_lock)                  \
                                                   ^
   fs/fscache/volume.c:188:6: note: Assuming 'key' is non-null
           if (!key)
               ^~~~
   fs/fscache/volume.c:188:2: note: Taking false branch
           if (!key)
           ^
   fs/fscache/volume.c:202:2: note: Loop condition is false.  Exiting loop
           fscache_stat(&fscache_n_volumes);
           ^
   fs/fscache/internal.h:111:28: note: expanded from macro 'fscache_stat'
   #define fscache_stat(stat) do {} while (0)
                              ^
   fs/fscache/volume.c:204:2: note: Taking false branch
           _leave(" = v=%x", volume->debug_id);
           ^
   fs/fscache/internal.h:189:26: note: expanded from macro '_leave'
   #define _leave(FMT, ...) no_printk("<== %s()"FMT"", __func__, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:140:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   fs/fscache/volume.c:276:11: note: Returning from 'fscache_alloc_volume'
           volume = fscache_alloc_volume(volume_key, cache_name, 
coherency_data);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:277:7: note: 'volume' is non-null
           if (!volume)
                ^~~~~~
   fs/fscache/volume.c:277:2: note: Taking false branch
           if (!volume)
           ^
   fs/fscache/volume.c:280:2: note: Taking false branch
           if (!fscache_hash_volume(volume)) {
           ^
   fs/fscache/volume.c:285:2: note: Calling 'fscache_create_volume'
           fscache_create_volume(volume, false);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:243:6: note: Assuming the condition is false
           if (test_and_set_bit(FSCACHE_VOLUME_CREATING, &volume->flags))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:243:2: note: Taking false branch
           if (test_and_set_bit(FSCACHE_VOLUME_CREATING, &volume->flags))
           ^
   fs/fscache/volume.c:245:6: note: Assuming field 'cache_priv' is null
           if (volume->cache_priv)
               ^~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:245:2: note: Taking false branch
           if (volume->cache_priv)
           ^
   fs/fscache/volume.c:247:6: note: Assuming the condition is false
           if (!fscache_begin_cache_access(volume->cache,
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:247:2: note: Taking false branch
           if (!fscache_begin_cache_access(volume->cache,
           ^
   fs/fscache/volume.c:252:6: note: Assuming the condition is true
           if (!schedule_work(&volume->work))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fscache/volume.c:252:2: note: Taking true branch
           if (!schedule_work(&volume->work))
           ^
   fs/fscache/volume.c:253:3: note: Calling 'fscache_put_volume'
                   fscache_put_volume(volume, fscache_volume_put_create_work);

vim +286 fs/fscache/volume.c

f463b2680fc340 David Howells 2020-02-06  266  
f463b2680fc340 David Howells 2020-02-06  267  /*
f463b2680fc340 David Howells 2020-02-06  268   * Acquire a volume 
representation cookie and link it to a (proposed) cache.
f463b2680fc340 David Howells 2020-02-06  269   */
f463b2680fc340 David Howells 2020-02-06  270  struct fscache_volume 
*__fscache_acquire_volume(const char *volume_key,
f463b2680fc340 David Howells 2020-02-06  271                                    
        const char *cache_name,
f463b2680fc340 David Howells 2020-02-06  272                                    
        u64 coherency_data)
f463b2680fc340 David Howells 2020-02-06  273  {
f463b2680fc340 David Howells 2020-02-06  274    struct fscache_volume *volume;
f463b2680fc340 David Howells 2020-02-06  275  
f463b2680fc340 David Howells 2020-02-06  276    volume = 
fscache_alloc_volume(volume_key, cache_name, coherency_data);
f463b2680fc340 David Howells 2020-02-06  277    if (!volume)
f463b2680fc340 David Howells 2020-02-06  278            return NULL;
f463b2680fc340 David Howells 2020-02-06  279  
f463b2680fc340 David Howells 2020-02-06  280    if 
(!fscache_hash_volume(volume)) {
f463b2680fc340 David Howells 2020-02-06  281            
fscache_put_volume(volume, fscache_volume_put_hash_collision);
f463b2680fc340 David Howells 2020-02-06  282            return NULL;
f463b2680fc340 David Howells 2020-02-06  283    }
f463b2680fc340 David Howells 2020-02-06  284  
f463b2680fc340 David Howells 2020-02-06  285    fscache_create_volume(volume, 
false);
f463b2680fc340 David Howells 2020-02-06 @286    return volume;
f463b2680fc340 David Howells 2020-02-06  287  }
f463b2680fc340 David Howells 2020-02-06  288  
EXPORT_SYMBOL(__fscache_acquire_volume);
f463b2680fc340 David Howells 2020-02-06  289  

---
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