tree: https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git testing/uapi/nfsd/nfsfh head: d28670226e028e65b0de5e6744c5df188fc2728b commit: 5c976c3f03be89378ca672c1a3c7ce7048d90606 [1/2] Makefile: Enable -Warray-bounds config: h8300-randconfig-s031-20210209 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-215-g0fb77bb6-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=5c976c3f03be89378ca672c1a3c7ce7048d90606 git remote add gustavoars-linux https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git git fetch --no-tags gustavoars-linux testing/uapi/nfsd/nfsfh git checkout 5c976c3f03be89378ca672c1a3c7ce7048d90606 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=h8300
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> All warnings (new ones prefixed by >>): fs/hpfs/dir.c: In function 'hpfs_readdir': >> fs/hpfs/dir.c:163:41: warning: array subscript 1 is above array bounds of >> 'u8[1]' {aka 'unsigned char[1]'} [-Warray-bounds] 163 | || de ->name[0] != 1 || de->name[1] != 1)) | ~~~~~~~~^~~ vim +163 fs/hpfs/dir.c ^1da177e4c3f41 Linus Torvalds 2005-04-16 64 568f8f5ec5f1ac Al Viro 2013-05-18 65 static int hpfs_readdir(struct file *file, struct dir_context *ctx) ^1da177e4c3f41 Linus Torvalds 2005-04-16 66 { 568f8f5ec5f1ac Al Viro 2013-05-18 67 struct inode *inode = file_inode(file); ^1da177e4c3f41 Linus Torvalds 2005-04-16 68 struct hpfs_inode_info *hpfs_inode = hpfs_i(inode); ^1da177e4c3f41 Linus Torvalds 2005-04-16 69 struct quad_buffer_head qbh; ^1da177e4c3f41 Linus Torvalds 2005-04-16 70 struct hpfs_dirent *de; ^1da177e4c3f41 Linus Torvalds 2005-04-16 71 int lc; 568f8f5ec5f1ac Al Viro 2013-05-18 72 loff_t next_pos; 7e7742ee005c88 Al Viro 2010-01-31 73 unsigned char *tempname; ^1da177e4c3f41 Linus Torvalds 2005-04-16 74 int c1, c2 = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 75 int ret = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 76 9a311b96c3065f Arnd Bergmann 2011-01-22 77 hpfs_lock(inode->i_sb); ^1da177e4c3f41 Linus Torvalds 2005-04-16 78 ^1da177e4c3f41 Linus Torvalds 2005-04-16 79 if (hpfs_sb(inode->i_sb)->sb_chk) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 80 if (hpfs_chk_sectors(inode->i_sb, inode->i_ino, 1, "dir_fnode")) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 81 ret = -EFSERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 82 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 83 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 84 if (hpfs_chk_sectors(inode->i_sb, hpfs_inode->i_dno, 4, "dir_dnode")) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 85 ret = -EFSERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 86 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 87 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 88 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 89 if (hpfs_sb(inode->i_sb)->sb_chk >= 2) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 90 struct buffer_head *bh; ^1da177e4c3f41 Linus Torvalds 2005-04-16 91 struct fnode *fno; ^1da177e4c3f41 Linus Torvalds 2005-04-16 92 int e = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 93 if (!(fno = hpfs_map_fnode(inode->i_sb, inode->i_ino, &bh))) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 94 ret = -EIOERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 95 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 96 } c4c995430a94e7 Al Viro 2012-04-06 97 if (!fnode_is_dir(fno)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 98 e = 1; 18debbbcce1306 Randy Dunlap 2006-12-06 99 hpfs_error(inode->i_sb, "not a directory, fnode %08lx", 18debbbcce1306 Randy Dunlap 2006-12-06 100 (unsigned long)inode->i_ino); ^1da177e4c3f41 Linus Torvalds 2005-04-16 101 } 0b69760be6968c Mikulas Patocka 2011-05-08 102 if (hpfs_inode->i_dno != le32_to_cpu(fno->u.external[0].disk_secno)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 103 e = 1; 0b69760be6968c Mikulas Patocka 2011-05-08 104 hpfs_error(inode->i_sb, "corrupted inode: i_dno == %08x, fnode -> dnode == %08x", hpfs_inode->i_dno, le32_to_cpu(fno->u.external[0].disk_secno)); ^1da177e4c3f41 Linus Torvalds 2005-04-16 105 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 106 brelse(bh); ^1da177e4c3f41 Linus Torvalds 2005-04-16 107 if (e) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 108 ret = -EFSERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 109 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 110 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 111 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 112 lc = hpfs_sb(inode->i_sb)->sb_lowercase; 568f8f5ec5f1ac Al Viro 2013-05-18 113 if (ctx->pos == 12) { /* diff -r requires this (note, that diff -r */ 568f8f5ec5f1ac Al Viro 2013-05-18 114 ctx->pos = 13; /* also fails on msdos filesystem in 2.0) */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 115 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 116 } 568f8f5ec5f1ac Al Viro 2013-05-18 117 if (ctx->pos == 13) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 118 ret = -ENOENT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 119 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 120 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 121 ^1da177e4c3f41 Linus Torvalds 2005-04-16 122 while (1) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 123 again: ^1da177e4c3f41 Linus Torvalds 2005-04-16 124 /* This won't work when cycle is longer than number of dirents ^1da177e4c3f41 Linus Torvalds 2005-04-16 125 accepted by filldir, but what can I do? ^1da177e4c3f41 Linus Torvalds 2005-04-16 126 maybe killall -9 ls helps */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 127 if (hpfs_sb(inode->i_sb)->sb_chk) 568f8f5ec5f1ac Al Viro 2013-05-18 128 if (hpfs_stop_cycles(inode->i_sb, ctx->pos, &c1, &c2, "hpfs_readdir")) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 129 ret = -EFSERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 130 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 131 } 568f8f5ec5f1ac Al Viro 2013-05-18 132 if (ctx->pos == 12) ^1da177e4c3f41 Linus Torvalds 2005-04-16 133 goto out; 568f8f5ec5f1ac Al Viro 2013-05-18 134 if (ctx->pos == 3 || ctx->pos == 4 || ctx->pos == 5) { a19189e5535ed8 Fabian Frederick 2014-06-06 135 pr_err("pos==%d\n", (int)ctx->pos); ^1da177e4c3f41 Linus Torvalds 2005-04-16 136 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 137 } 568f8f5ec5f1ac Al Viro 2013-05-18 138 if (ctx->pos == 0) { 568f8f5ec5f1ac Al Viro 2013-05-18 139 if (!dir_emit_dot(file, ctx)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 140 goto out; 568f8f5ec5f1ac Al Viro 2013-05-18 141 ctx->pos = 11; ^1da177e4c3f41 Linus Torvalds 2005-04-16 142 } 568f8f5ec5f1ac Al Viro 2013-05-18 143 if (ctx->pos == 11) { 568f8f5ec5f1ac Al Viro 2013-05-18 144 if (!dir_emit(ctx, "..", 2, hpfs_inode->i_parent_dir, DT_DIR)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 145 goto out; 568f8f5ec5f1ac Al Viro 2013-05-18 146 ctx->pos = 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 147 } 568f8f5ec5f1ac Al Viro 2013-05-18 148 if (ctx->pos == 1) { e82c3147554785 Al Viro 2016-05-12 149 ret = hpfs_add_pos(inode, &file->f_pos); e82c3147554785 Al Viro 2016-05-12 150 if (unlikely(ret < 0)) e82c3147554785 Al Viro 2016-05-12 151 goto out; 568f8f5ec5f1ac Al Viro 2013-05-18 152 ctx->pos = ((loff_t) hpfs_de_as_down_as_possible(inode->i_sb, hpfs_inode->i_dno) << 4) + 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 153 } 568f8f5ec5f1ac Al Viro 2013-05-18 154 next_pos = ctx->pos; 568f8f5ec5f1ac Al Viro 2013-05-18 155 if (!(de = map_pos_dirent(inode, &next_pos, &qbh))) { 568f8f5ec5f1ac Al Viro 2013-05-18 156 ctx->pos = next_pos; ^1da177e4c3f41 Linus Torvalds 2005-04-16 157 ret = -EIOERROR; ^1da177e4c3f41 Linus Torvalds 2005-04-16 158 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 159 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 160 if (de->first || de->last) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 161 if (hpfs_sb(inode->i_sb)->sb_chk) { 18debbbcce1306 Randy Dunlap 2006-12-06 162 if (de->first && !de->last && (de->namelen != 2 18debbbcce1306 Randy Dunlap 2006-12-06 @163 || de ->name[0] != 1 || de->name[1] != 1)) 568f8f5ec5f1ac Al Viro 2013-05-18 164 hpfs_error(inode->i_sb, "hpfs_readdir: bad ^A^A entry; pos = %08lx", (unsigned long)ctx->pos); 18debbbcce1306 Randy Dunlap 2006-12-06 165 if (de->last && (de->namelen != 1 || de ->name[0] != 255)) 568f8f5ec5f1ac Al Viro 2013-05-18 166 hpfs_error(inode->i_sb, "hpfs_readdir: bad \\377 entry; pos = %08lx", (unsigned long)ctx->pos); ^1da177e4c3f41 Linus Torvalds 2005-04-16 167 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 168 hpfs_brelse4(&qbh); 568f8f5ec5f1ac Al Viro 2013-05-18 169 ctx->pos = next_pos; ^1da177e4c3f41 Linus Torvalds 2005-04-16 170 goto again; ^1da177e4c3f41 Linus Torvalds 2005-04-16 171 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 172 tempname = hpfs_translate_name(inode->i_sb, de->name, de->namelen, lc, de->not_8x3); 568f8f5ec5f1ac Al Viro 2013-05-18 173 if (!dir_emit(ctx, tempname, de->namelen, le32_to_cpu(de->fnode), DT_UNKNOWN)) { 7e7742ee005c88 Al Viro 2010-01-31 174 if (tempname != de->name) kfree(tempname); ^1da177e4c3f41 Linus Torvalds 2005-04-16 175 hpfs_brelse4(&qbh); ^1da177e4c3f41 Linus Torvalds 2005-04-16 176 goto out; ^1da177e4c3f41 Linus Torvalds 2005-04-16 177 } 568f8f5ec5f1ac Al Viro 2013-05-18 178 ctx->pos = next_pos; 7e7742ee005c88 Al Viro 2010-01-31 179 if (tempname != de->name) kfree(tempname); ^1da177e4c3f41 Linus Torvalds 2005-04-16 180 hpfs_brelse4(&qbh); ^1da177e4c3f41 Linus Torvalds 2005-04-16 181 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 182 out: 9a311b96c3065f Arnd Bergmann 2011-01-22 183 hpfs_unlock(inode->i_sb); ^1da177e4c3f41 Linus Torvalds 2005-04-16 184 return ret; ^1da177e4c3f41 Linus Torvalds 2005-04-16 185 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 186 :::::: The code at line 163 was first introduced by commit :::::: 18debbbcce1306f0bbb1c71cf587fd90413acab6 [PATCH] hpfs: fix printk format warnings :::::: TO: Randy Dunlap <randy.dun...@oracle.com> :::::: CC: Linus Torvalds <torva...@woody.osdl.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip