[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202411170856.SfrPdEy1-lkp@intel.com>
Date: Sun, 17 Nov 2024 08:34:23 +0800
From: kernel test robot <lkp@...el.com>
To: Zhang Tianci <zhangtianci.1997@...edance.com>, miklos@...redi.hu
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
xieyongji@...edance.com,
Zhang Tianci <zhangtianci.1997@...edance.com>,
Jiachen Zhang <zhangjiachen.jaycee@...edance.com>
Subject: Re: [PATCH] fuse: check attributes staleness on fuse_iget()
Hi Zhang,
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.12-rc7]
[also build test WARNING on linus/master]
[cannot apply to mszeredi-fuse/for-next next-20241115]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zhang-Tianci/fuse-check-attributes-staleness-on-fuse_iget/20241114-151838
base: v6.12-rc7
patch link: https://lore.kernel.org/r/20241114070905.48901-1-zhangtianci.1997%40bytedance.com
patch subject: [PATCH] fuse: check attributes staleness on fuse_iget()
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20241117/202411170856.SfrPdEy1-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241117/202411170856.SfrPdEy1-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411170856.SfrPdEy1-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from fs/fuse/inode.c:9:
In file included from fs/fuse/fuse_i.h:22:
In file included from include/linux/mm.h:2213:
include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
505 | item];
| ~~~~
include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
512 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
524 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
525 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> fs/fuse/inode.c:456:7: warning: variable 'fi' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
456 | if (!fi->submount_lookup) {
| ^~~~~~~~~~~~~~~~~~~~
fs/fuse/inode.c:493:13: note: uninitialized use occurs here
493 | spin_lock(&fi->lock);
| ^~
fs/fuse/inode.c:456:3: note: remove the 'if' if its condition is always true
456 | if (!fi->submount_lookup) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
fs/fuse/inode.c:434:23: note: initialize the variable 'fi' to silence this warning
434 | struct fuse_inode *fi;
| ^
| = NULL
5 warnings generated.
vim +456 fs/fuse/inode.c
d8a5ba45457e4a Miklos Szeredi 2005-09-09 427
b48badf013018e Miklos Szeredi 2008-04-30 428 struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
1fb69e7817296d Miklos Szeredi 2007-10-18 429 int generation, struct fuse_attr *attr,
243f2d46af8e04 Zhang Tianci 2024-11-14 430 u64 attr_valid, u64 attr_version,
243f2d46af8e04 Zhang Tianci 2024-11-14 431 u64 evict_ctr)
d8a5ba45457e4a Miklos Szeredi 2005-09-09 432 {
d8a5ba45457e4a Miklos Szeredi 2005-09-09 433 struct inode *inode;
9e6268db496a25 Miklos Szeredi 2005-09-09 434 struct fuse_inode *fi;
d8a5ba45457e4a Miklos Szeredi 2005-09-09 435 struct fuse_conn *fc = get_fuse_conn_super(sb);
d8a5ba45457e4a Miklos Szeredi 2005-09-09 436
bf109c64040f5b Max Reitz 2020-04-21 437 /*
bf109c64040f5b Max Reitz 2020-04-21 438 * Auto mount points get their node id from the submount root, which is
bf109c64040f5b Max Reitz 2020-04-21 439 * not a unique identifier within this filesystem.
bf109c64040f5b Max Reitz 2020-04-21 440 *
bf109c64040f5b Max Reitz 2020-04-21 441 * To avoid conflicts, do not place submount points into the inode hash
bf109c64040f5b Max Reitz 2020-04-21 442 * table.
bf109c64040f5b Max Reitz 2020-04-21 443 */
bf109c64040f5b Max Reitz 2020-04-21 444 if (fc->auto_submounts && (attr->flags & FUSE_ATTR_SUBMOUNT) &&
bf109c64040f5b Max Reitz 2020-04-21 445 S_ISDIR(attr->mode)) {
c4d361f66ac91d Krister Johansen 2023-11-03 446 struct fuse_inode *fi;
c4d361f66ac91d Krister Johansen 2023-11-03 447
bf109c64040f5b Max Reitz 2020-04-21 448 inode = new_inode(sb);
bf109c64040f5b Max Reitz 2020-04-21 449 if (!inode)
bf109c64040f5b Max Reitz 2020-04-21 450 return NULL;
bf109c64040f5b Max Reitz 2020-04-21 451
facd61053cff10 Christian Brauner 2023-01-20 452 fuse_init_inode(inode, attr, fc);
c4d361f66ac91d Krister Johansen 2023-11-03 453 fi = get_fuse_inode(inode);
c4d361f66ac91d Krister Johansen 2023-11-03 454 fi->nodeid = nodeid;
c4d361f66ac91d Krister Johansen 2023-11-03 455 fi->submount_lookup = fuse_alloc_submount_lookup();
c4d361f66ac91d Krister Johansen 2023-11-03 @456 if (!fi->submount_lookup) {
c4d361f66ac91d Krister Johansen 2023-11-03 457 iput(inode);
c4d361f66ac91d Krister Johansen 2023-11-03 458 return NULL;
c4d361f66ac91d Krister Johansen 2023-11-03 459 }
c4d361f66ac91d Krister Johansen 2023-11-03 460 /* Sets nlookup = 1 on fi->submount_lookup->nlookup */
c4d361f66ac91d Krister Johansen 2023-11-03 461 fuse_init_submount_lookup(fi->submount_lookup, nodeid);
bf109c64040f5b Max Reitz 2020-04-21 462 inode->i_flags |= S_AUTOMOUNT;
bf109c64040f5b Max Reitz 2020-04-21 463 goto done;
bf109c64040f5b Max Reitz 2020-04-21 464 }
bf109c64040f5b Max Reitz 2020-04-21 465
d8a5ba45457e4a Miklos Szeredi 2005-09-09 466 retry:
d8a5ba45457e4a Miklos Szeredi 2005-09-09 467 inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid);
d8a5ba45457e4a Miklos Szeredi 2005-09-09 468 if (!inode)
d8a5ba45457e4a Miklos Szeredi 2005-09-09 469 return NULL;
d8a5ba45457e4a Miklos Szeredi 2005-09-09 470
d8a5ba45457e4a Miklos Szeredi 2005-09-09 471 if ((inode->i_state & I_NEW)) {
b0aa7606521790 Maxim Patlasov 2013-12-26 472 inode->i_flags |= S_NOATIME;
d31433c8b06d44 Maxim Patlasov 2014-04-28 473 if (!fc->writeback_cache || !S_ISREG(attr->mode))
b0aa7606521790 Maxim Patlasov 2013-12-26 474 inode->i_flags |= S_NOCMTIME;
d8a5ba45457e4a Miklos Szeredi 2005-09-09 475 inode->i_generation = generation;
facd61053cff10 Christian Brauner 2023-01-20 476 fuse_init_inode(inode, attr, fc);
d8a5ba45457e4a Miklos Szeredi 2005-09-09 477 unlock_new_inode(inode);
15db16837a35d8 Amir Goldstein 2021-06-21 478 } else if (fuse_stale_inode(inode, generation, attr)) {
15db16837a35d8 Amir Goldstein 2021-06-21 479 /* nodeid was reused, any I/O on the old inode should fail */
5d069dbe8aaf2a Miklos Szeredi 2020-12-10 480 fuse_make_bad(inode);
b1fe686a765e6c Miklos Szeredi 2024-02-28 481 if (inode != d_inode(sb->s_root)) {
b1fe686a765e6c Miklos Szeredi 2024-02-28 482 remove_inode_hash(inode);
d8a5ba45457e4a Miklos Szeredi 2005-09-09 483 iput(inode);
d8a5ba45457e4a Miklos Szeredi 2005-09-09 484 goto retry;
d8a5ba45457e4a Miklos Szeredi 2005-09-09 485 }
b1fe686a765e6c Miklos Szeredi 2024-02-28 486 }
9e6268db496a25 Miklos Szeredi 2005-09-09 487 fi = get_fuse_inode(inode);
c9d8f5f0692d59 Kirill Tkhai 2018-11-09 488 spin_lock(&fi->lock);
9e6268db496a25 Miklos Szeredi 2005-09-09 489 fi->nlookup++;
c9d8f5f0692d59 Kirill Tkhai 2018-11-09 490 spin_unlock(&fi->lock);
c4d361f66ac91d Krister Johansen 2023-11-03 491 done:
972f4c46d0a1bb Miklos Szeredi 2023-08-10 492 fuse_change_attributes(inode, attr, NULL, attr_valid, attr_version);
243f2d46af8e04 Zhang Tianci 2024-11-14 493 spin_lock(&fi->lock);
243f2d46af8e04 Zhang Tianci 2024-11-14 494 if (evict_ctr < fuse_get_evict_ctr(fc))
243f2d46af8e04 Zhang Tianci 2024-11-14 495 fuse_invalidate_attr(inode);
243f2d46af8e04 Zhang Tianci 2024-11-14 496 spin_unlock(&fi->lock);
1fb69e7817296d Miklos Szeredi 2007-10-18 497
d8a5ba45457e4a Miklos Szeredi 2005-09-09 498 return inode;
d8a5ba45457e4a Miklos Szeredi 2005-09-09 499 }
d8a5ba45457e4a Miklos Szeredi 2005-09-09 500
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists