lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202108161043.VP9B95Y0-lkp@intel.com>
Date:   Mon, 16 Aug 2021 10:33:45 +0800
From:   kernel test robot <lkp@...el.com>
To:     Gao Xiang <hsiangkao@...ux.alibaba.com>
Cc:     clang-built-linux@...glegroups.com, kbuild-all@...ts.01.org,
        Xiang Gao <xiang@...nel.org>, linux-kernel@...r.kernel.org
Subject: [xiang-linux:erofs/chunk 8/8] fs/erofs/data.c:93:6: warning:
 variable 'err' is used uninitialized whenever 'if' condition is true

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git erofs/chunk
head:   a915f0e209270389efab942fcd446e31a98c4062
commit: a915f0e209270389efab942fcd446e31a98c4062 [8/8] erofs: support reading chunk-based files
config: powerpc-randconfig-r013-20210816 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7776b19eed44906e9973bfb240b6279d6feaab41)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git/commit/?id=a915f0e209270389efab942fcd446e31a98c4062
        git remote add xiang-linux https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git
        git fetch --no-tags xiang-linux erofs/chunk
        git checkout a915f0e209270389efab942fcd446e31a98c4062
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc 

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

All warnings (new ones prefixed by >>):

   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:45:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:209:1: note: expanded from here
   __do_insw
   ^
   arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw'
   #define __do_insw(p, b, n)      readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/erofs/data.c:7:
   In file included from fs/erofs/internal.h:13:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:211:1: note: expanded from here
   __do_insl
   ^
   arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
   #define __do_insl(p, b, n)      readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/erofs/data.c:7:
   In file included from fs/erofs/internal.h:13:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:213:1: note: expanded from here
   __do_outsb
   ^
   arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
   #define __do_outsb(p, b, n)     writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/erofs/data.c:7:
   In file included from fs/erofs/internal.h:13:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:215:1: note: expanded from here
   __do_outsw
   ^
   arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
   #define __do_outsw(p, b, n)     writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/erofs/data.c:7:
   In file included from fs/erofs/internal.h:13:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:217:1: note: expanded from here
   __do_outsl
   ^
   arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
   #define __do_outsl(p, b, n)     writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
>> fs/erofs/data.c:93:6: warning: variable 'err' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (map->m_la >= inode->i_size) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/erofs/data.c:151:9: note: uninitialized use occurs here
           return err;
                  ^~~
   fs/erofs/data.c:93:2: note: remove the 'if' if its condition is always false
           if (map->m_la >= inode->i_size) {
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/erofs/data.c:91:9: note: initialize the variable 'err' to silence this warning
           int err;
                  ^
                   = 0
   7 warnings generated.


vim +93 fs/erofs/data.c

    80	
    81	static int erofs_map_blocks(struct inode *inode,
    82				    struct erofs_map_blocks *map, int flags)
    83	{
    84		struct super_block *sb = inode->i_sb;
    85		struct erofs_inode *vi = EROFS_I(inode);
    86		struct erofs_inode_chunk_index *idx;
    87		struct page *page;
    88		u64 chunknr;
    89		unsigned int unit;
    90		erofs_off_t pos;
    91		int err;
    92	
  > 93		if (map->m_la >= inode->i_size) {
    94			map->m_flags = 0;
    95			map->m_plen = 0;
    96			goto out;
    97		}
    98	
    99		if (vi->datalayout != EROFS_INODE_CHUNK_BASED)
   100			return erofs_map_blocks_flatmode(inode, map, flags);
   101	
   102		if (vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)
   103			unit = sizeof(*idx);	/* chunk index */
   104		else
   105			unit = 4;		/* chunk index */
   106	
   107		chunknr = map->m_la >> vi->chunkbits;
   108		pos = ALIGN(iloc(EROFS_SB(sb), vi->nid) + vi->inode_isize +
   109			    vi->xattr_isize, unit) + unit * chunknr;
   110	
   111		page = erofs_get_meta_page(inode->i_sb, erofs_blknr(pos));
   112		if (IS_ERR(page))
   113			return PTR_ERR(page);
   114	
   115		err = 0;
   116		map->m_plen = min_t(erofs_off_t, 1 << vi->chunkbits,
   117				    inode->i_size - map->m_la);
   118		if (!(vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)) {
   119			__le32 *blkaddr = page_address(page) + erofs_blkoff(pos);
   120	
   121			if (le32_to_cpu(*blkaddr) == EROFS_NULL_ADDR) {
   122				map->m_flags = 0;
   123			} else {
   124				map->m_pa = blknr_to_addr(le32_to_cpu(*blkaddr));
   125				map->m_flags = EROFS_MAP_MAPPED;
   126			}
   127			goto out_unlock;
   128		}
   129		idx = page_address(page) + erofs_blkoff(pos);
   130		switch (le32_to_cpu(idx->blkaddr)) {
   131		case EROFS_NULL_ADDR:
   132			map->m_flags = 0;
   133			break;
   134		default:
   135			if (idx->device_id) {
   136				erofs_err(sb, "invalid device %u @ %llu for nid %llu",
   137					  le32_to_cpu(idx->device_id),
   138					  chunknr, vi->nid);
   139				err = -EINVAL;
   140				goto out;
   141			}
   142			map->m_pa = blknr_to_addr(le32_to_cpu(idx->blkaddr));
   143			map->m_flags = EROFS_MAP_MAPPED;
   144			break;
   145		}
   146	out_unlock:
   147		unlock_page(page);
   148		put_page(page);
   149	out:
   150		map->m_llen = map->m_plen;
   151		return err;
   152	}
   153	

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

Download attachment ".config.gz" of type "application/gzip" (33572 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ