Hi Bernd, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Bernd-Schubert/fuse-rename-fuse_create_open/20230921-013805 base: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping.git for-next patch link: https://lore.kernel.org/r/20230920173445.3943581-5-bschubert%40ddn.com patch subject: [PATCH v9 4/7] vfs: Optimize atomic_open() on positive dentry config: i386-randconfig-141-20230927 (https://download.01.org/0day-ci/archive/20231011/202310111259.WGjXat6p-lkp@xxxxxxxxx/config) compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 reproduce: (https://download.01.org/0day-ci/archive/20231011/202310111259.WGjXat6p-lkp@xxxxxxxxx/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@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202310111259.WGjXat6p-lkp@xxxxxxxxx/ New smatch warnings: fs/namei.c:3418 atomic_revalidate_open() warn: variable dereferenced before check 'got_write' (see line 3414) Old smatch warnings: fs/namei.c:1573 lookup_dcache() warn: passing zero to 'ERR_PTR' fs/namei.c:1658 lookup_fast() warn: passing zero to 'ERR_PTR' fs/namei.c:2189 hash_name() error: uninitialized symbol 'bdata'. fs/namei.c:2600 __kern_path_locked() warn: inconsistent returns '&path->dentry->d_inode->i_rwsem'. fs/namei.c:3480 lookup_open() error: uninitialized symbol 'error'. vim +/got_write +3418 fs/namei.c 0bb53ce89df211 Bernd Schubert 2023-09-20 3391 static struct dentry *atomic_revalidate_open(struct dentry *dentry, 0bb53ce89df211 Bernd Schubert 2023-09-20 3392 struct nameidata *nd, 0bb53ce89df211 Bernd Schubert 2023-09-20 3393 struct file *file, 0bb53ce89df211 Bernd Schubert 2023-09-20 3394 const struct open_flags *op, 0bb53ce89df211 Bernd Schubert 2023-09-20 3395 bool *got_write) 0bb53ce89df211 Bernd Schubert 2023-09-20 3396 { 0bb53ce89df211 Bernd Schubert 2023-09-20 3397 struct mnt_idmap *idmap; 0bb53ce89df211 Bernd Schubert 2023-09-20 3398 struct dentry *dir = nd->path.dentry; 0bb53ce89df211 Bernd Schubert 2023-09-20 3399 struct inode *dir_inode = dir->d_inode; 0bb53ce89df211 Bernd Schubert 2023-09-20 3400 int open_flag = op->open_flag; 0bb53ce89df211 Bernd Schubert 2023-09-20 3401 umode_t mode = op->mode; 0bb53ce89df211 Bernd Schubert 2023-09-20 3402 0bb53ce89df211 Bernd Schubert 2023-09-20 3403 if (unlikely(IS_DEADDIR(dir_inode))) 0bb53ce89df211 Bernd Schubert 2023-09-20 3404 return ERR_PTR(-ENOENT); 0bb53ce89df211 Bernd Schubert 2023-09-20 3405 0bb53ce89df211 Bernd Schubert 2023-09-20 3406 file->f_mode &= ~FMODE_CREATED; 0bb53ce89df211 Bernd Schubert 2023-09-20 3407 0bb53ce89df211 Bernd Schubert 2023-09-20 3408 if (unlikely(open_flag & O_CREAT)) { 0bb53ce89df211 Bernd Schubert 2023-09-20 3409 WARN_ON(1); 0bb53ce89df211 Bernd Schubert 2023-09-20 3410 return ERR_PTR(-EINVAL); 0bb53ce89df211 Bernd Schubert 2023-09-20 3411 } 0bb53ce89df211 Bernd Schubert 2023-09-20 3412 0bb53ce89df211 Bernd Schubert 2023-09-20 3413 if (open_flag & (O_TRUNC | O_WRONLY | O_RDWR)) 0bb53ce89df211 Bernd Schubert 2023-09-20 @3414 *got_write = !mnt_want_write(nd->path.mnt); Dereferenced 0bb53ce89df211 Bernd Schubert 2023-09-20 3415 else 0bb53ce89df211 Bernd Schubert 2023-09-20 3416 *got_write = false; Here too. 0bb53ce89df211 Bernd Schubert 2023-09-20 3417 0bb53ce89df211 Bernd Schubert 2023-09-20 @3418 if (!got_write) Checked too late. But I think maybe it was supposed to check if (!*got_write)? 0bb53ce89df211 Bernd Schubert 2023-09-20 3419 open_flag &= ~O_TRUNC; 0bb53ce89df211 Bernd Schubert 2023-09-20 3420 0bb53ce89df211 Bernd Schubert 2023-09-20 3421 inode_lock_shared(dir->d_inode); 0bb53ce89df211 Bernd Schubert 2023-09-20 3422 dentry = atomic_open(nd, dentry, file, open_flag, mode); -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki