[linux-next:master 3583/5418] fs/cachefiles/io.c:487:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   04fe99a8d936d46a310ca61b8b63dc270962bf01
commit: 0443b01eccbb2c6eb9c3b497b6b576b024010c91 [3583/5418] cachefiles: Implement the I/O routines
config: hexagon-randconfig-r045-20211207 (https://download.01.org/0day-ci/archive/20211208/202112080416.rR3SWLwT-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
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://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=0443b01eccbb2c6eb9c3b497b6b576b024010c91
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 0443b01eccbb2c6eb9c3b497b6b576b024010c91
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash fs/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> fs/cachefiles/io.c:487:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
           if (pos == 0)
               ^~~~~~~~
   fs/cachefiles/io.c:490:6: note: uninitialized use occurs here
           if (ret < 0) {
               ^~~
   fs/cachefiles/io.c:487:2: note: remove the 'if' if its condition is always true
           if (pos == 0)
           ^~~~~~~~~~~~~
   fs/cachefiles/io.c:440:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   1 warning generated.


vim +487 fs/cachefiles/io.c

   427	
   428	/*
   429	 * Prepare for a write to occur.
   430	 */
   431	static int __cachefiles_prepare_write(struct netfs_cache_resources *cres,
   432					      loff_t *_start, size_t *_len, loff_t i_size,
   433					      bool no_space_allocated_yet)
   434	{
   435		struct cachefiles_object *object = cachefiles_cres_object(cres);
   436		struct cachefiles_cache *cache = object->volume->cache;
   437		struct file *file = cachefiles_cres_file(cres);
   438		loff_t start = *_start, pos;
   439		size_t len = *_len, down;
   440		int ret;
   441	
   442		/* Round to DIO size */
   443		down = start - round_down(start, PAGE_SIZE);
   444		*_start = start - down;
   445		*_len = round_up(down + len, PAGE_SIZE);
   446	
   447		/* We need to work out whether there's sufficient disk space to perform
   448		 * the write - but we can skip that check if we have space already
   449		 * allocated.
   450		 */
   451		if (no_space_allocated_yet)
   452			goto check_space;
   453	
   454		pos = cachefiles_inject_read_error();
   455		if (pos == 0)
   456			pos = vfs_llseek(file, *_start, SEEK_DATA);
   457		if (pos < 0 && pos >= (loff_t)-MAX_ERRNO) {
   458			if (pos == -ENXIO)
   459				goto check_space; /* Unallocated tail */
   460			trace_cachefiles_io_error(object, file_inode(file), pos,
   461						  cachefiles_trace_seek_error);
   462			return pos;
   463		}
   464		if ((u64)pos >= (u64)*_start + *_len)
   465			goto check_space; /* Unallocated region */
   466	
   467		/* We have a block that's at least partially filled - if we're low on
   468		 * space, we need to see if it's fully allocated.  If it's not, we may
   469		 * want to cull it.
   470		 */
   471		if (cachefiles_has_space(cache, 0, *_len / PAGE_SIZE) == 0)
   472			return 0; /* Enough space to simply overwrite the whole block */
   473	
   474		pos = cachefiles_inject_read_error();
   475		if (pos == 0)
   476			pos = vfs_llseek(file, *_start, SEEK_HOLE);
   477		if (pos < 0 && pos >= (loff_t)-MAX_ERRNO) {
   478			trace_cachefiles_io_error(object, file_inode(file), pos,
   479						  cachefiles_trace_seek_error);
   480			return pos;
   481		}
   482		if ((u64)pos >= (u64)*_start + *_len)
   483			return 0; /* Fully allocated */
   484	
   485		/* Partially allocated, but insufficient space: cull. */
   486		pos = cachefiles_inject_remove_error();
 > 487		if (pos == 0)
   488			ret = vfs_fallocate(file, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
   489					    *_start, *_len);
   490		if (ret < 0) {
   491			trace_cachefiles_io_error(object, file_inode(file), ret,
   492						  cachefiles_trace_fallocate_error);
   493			cachefiles_io_error_obj(object,
   494						"CacheFiles: fallocate failed (%d)\n", ret);
   495			ret = -EIO;
   496		}
   497	
   498		return ret;
   499	
   500	check_space:
   501		return cachefiles_has_space(cache, 0, *_len / PAGE_SIZE);
   502	}
   503	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux