Re: [PATCH 2/2] jffs2: use unsigned 32-bit timstamps consistently

From: kbuild test robot
Date: Tue Jun 19 2018 - 17:10:34 EST


Hi Arnd,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.18-rc1 next-20180619]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Arnd-Bergmann/jffs2-use-64-bit-intermediate-timestamps/20180620-015800
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
>> fs/jffs2/dir.c:263:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:230:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:403:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:546:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:591:24: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:715:22: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
fs/jffs2/dir.c:800:15: sparse: expression using sizeof(void)
--
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
>> fs/jffs2/fs.c:115:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:116:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:117:21: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
fs/jffs2/fs.c:476:45: sparse: expression using sizeof(void)
include/linux/slab.h:631:13: sparse: undefined identifier '__builtin_mul_overflow'
include/linux/slab.h:631:13: sparse: call with no type!

vim +263 fs/jffs2/dir.c

^1da177e Linus Torvalds 2005-04-16 241
^1da177e Linus Torvalds 2005-04-16 242
^1da177e Linus Torvalds 2005-04-16 243 static int jffs2_link (struct dentry *old_dentry, struct inode *dir_i, struct dentry *dentry)
^1da177e Linus Torvalds 2005-04-16 244 {
fc64005c Al Viro 2016-04-10 245 struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dentry->d_sb);
2b0143b5 David Howells 2015-03-17 246 struct jffs2_inode_info *f = JFFS2_INODE_INFO(d_inode(old_dentry));
^1da177e Linus Torvalds 2005-04-16 247 struct jffs2_inode_info *dir_f = JFFS2_INODE_INFO(dir_i);
^1da177e Linus Torvalds 2005-04-16 248 int ret;
^1da177e Linus Torvalds 2005-04-16 249 uint8_t type;
3a69e0cd Artem B. Bityutskiy 2005-08-17 250 uint32_t now;
^1da177e Linus Torvalds 2005-04-16 251
^1da177e Linus Torvalds 2005-04-16 252 /* Don't let people make hard links to bad inodes. */
^1da177e Linus Torvalds 2005-04-16 253 if (!f->inocache)
^1da177e Linus Torvalds 2005-04-16 254 return -EIO;
^1da177e Linus Torvalds 2005-04-16 255
e36cb0b8 David Howells 2015-01-29 256 if (d_is_dir(old_dentry))
^1da177e Linus Torvalds 2005-04-16 257 return -EPERM;
^1da177e Linus Torvalds 2005-04-16 258
^1da177e Linus Torvalds 2005-04-16 259 /* XXX: This is ugly */
2b0143b5 David Howells 2015-03-17 260 type = (d_inode(old_dentry)->i_mode & S_IFMT) >> 12;
^1da177e Linus Torvalds 2005-04-16 261 if (!type) type = DT_REG;
^1da177e Linus Torvalds 2005-04-16 262
a7cab044 Arnd Bergmann 2018-06-19 @263 now = JFFS2_NOW();
3a69e0cd Artem B. Bityutskiy 2005-08-17 264 ret = jffs2_do_link(c, dir_f, f->inocache->ino, type, dentry->d_name.name, dentry->d_name.len, now);
^1da177e Linus Torvalds 2005-04-16 265
^1da177e Linus Torvalds 2005-04-16 266 if (!ret) {
ced22070 David Woodhouse 2008-04-22 267 mutex_lock(&f->sem);
2b0143b5 David Howells 2015-03-17 268 set_nlink(d_inode(old_dentry), ++f->inocache->pino_nlink);
ced22070 David Woodhouse 2008-04-22 269 mutex_unlock(&f->sem);
2b0143b5 David Howells 2015-03-17 270 d_instantiate(dentry, d_inode(old_dentry));
a7cab044 Arnd Bergmann 2018-06-19 271 dir_i->i_mtime = dir_i->i_ctime = ITIME(now);
2b0143b5 David Howells 2015-03-17 272 ihold(d_inode(old_dentry));
^1da177e Linus Torvalds 2005-04-16 273 }
^1da177e Linus Torvalds 2005-04-16 274 return ret;
^1da177e Linus Torvalds 2005-04-16 275 }
^1da177e Linus Torvalds 2005-04-16 276

:::::: The code at line 263 was first introduced by commit
:::::: a7cab044350466ac53107fa859f1f2cbc4d5112b jffs2: use 64-bit intermediate timestamps

:::::: TO: Arnd Bergmann <arnd@xxxxxxxx>
:::::: CC: 0day robot <lkp@xxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation