Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [koverstreet-bcachefs:bcachefs-testing 251/252] fs/bcachefs/fs.c:960:8: warning: variable 'trans' is used uninitialized whenever 'if' condition is true
Date: Tue, 20 May 2025 14:32:21 +0800	[thread overview]
Message-ID: <202505201434.jPrDJIPG-lkp@intel.com> (raw)

tree:   https://github.com/koverstreet/bcachefs bcachefs-testing
head:   0d62becef614036a50005eca81fb5bd0b0790fb0
commit: ba3508b68bd71545e1d7eb062ebb0ee33fb1345a [251/252] bcachefs: Hook up d_casefold_enable()
config: hexagon-randconfig-002-20250520 (https://download.01.org/0day-ci/archive/20250520/202505201434.jPrDJIPG-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250520/202505201434.jPrDJIPG-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505201434.jPrDJIPG-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/bcachefs/fs.c:960:8: warning: variable 'trans' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
     960 |                         if (ret)
         |                             ^~~
   fs/bcachefs/fs.c:1051:17: note: uninitialized use occurs here
    1051 |         bch2_trans_put(trans);
         |                        ^~~~~
   fs/bcachefs/fs.c:960:4: note: remove the 'if' if its condition is always false
     960 |                         if (ret)
         |                         ^~~~~~~~
     961 |                                 goto err;
         |                                 ~~~~~~~~
   fs/bcachefs/fs.c:953:8: warning: variable 'trans' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
     953 |                         if (ret)
         |                             ^~~
   fs/bcachefs/fs.c:1051:17: note: uninitialized use occurs here
    1051 |         bch2_trans_put(trans);
         |                        ^~~~~
   fs/bcachefs/fs.c:953:4: note: remove the 'if' if its condition is always false
     953 |                         if (ret)
         |                         ^~~~~~~~
     954 |                                 goto err;
         |                                 ~~~~~~~~
   fs/bcachefs/fs.c:926:27: note: initialize the variable 'trans' to silence this warning
     926 |         struct btree_trans *trans;
         |                                  ^
         |                                   = NULL
   2 warnings generated.


vim +960 fs/bcachefs/fs.c

   911	
   912	static int bch2_rename2(struct mnt_idmap *idmap,
   913				struct inode *src_vdir, struct dentry *src_dentry,
   914				struct inode *dst_vdir, struct dentry *dst_dentry,
   915				unsigned flags)
   916	{
   917		struct bch_fs *c = src_vdir->i_sb->s_fs_info;
   918		struct bch_inode_info *src_dir = to_bch_ei(src_vdir);
   919		struct bch_inode_info *dst_dir = to_bch_ei(dst_vdir);
   920		struct bch_inode_info *src_inode = to_bch_ei(src_dentry->d_inode);
   921		struct bch_inode_info *dst_inode = to_bch_ei(dst_dentry->d_inode);
   922		struct bch_inode_unpacked dst_dir_u, src_dir_u;
   923		struct bch_inode_unpacked src_inode_u, dst_inode_u, *whiteout_inode_u;
   924		struct d_casefold_enable casefold_enable_src = {};
   925		struct d_casefold_enable casefold_enable_dst = {};
   926		struct btree_trans *trans;
   927		enum bch_rename_mode mode = flags & RENAME_EXCHANGE
   928			? BCH_RENAME_EXCHANGE
   929			: dst_dentry->d_inode
   930			? BCH_RENAME_OVERWRITE : BCH_RENAME;
   931		bool whiteout = !!(flags & RENAME_WHITEOUT);
   932		int ret;
   933	
   934		if (flags & ~(RENAME_NOREPLACE|RENAME_EXCHANGE|RENAME_WHITEOUT))
   935			return -EINVAL;
   936	
   937		if (mode == BCH_RENAME_OVERWRITE) {
   938			ret = filemap_write_and_wait_range(src_inode->v.i_mapping,
   939							   0, LLONG_MAX);
   940			if (ret)
   941				return ret;
   942		}
   943	
   944		bch2_lock_inodes(INODE_UPDATE_LOCK,
   945				 src_dir,
   946				 dst_dir,
   947				 src_inode,
   948				 dst_inode);
   949	
   950		if (src_dir != dst_dir) {
   951			if (bch2_inode_casefold(c, &src_inode->ei_inode)) {
   952				ret = d_casefold_enable(dst_dentry, &casefold_enable_dst);
   953				if (ret)
   954					goto err;
   955			}
   956	
   957			if (mode == BCH_RENAME_EXCHANGE &&
   958			    bch2_inode_casefold(c, &dst_inode->ei_inode)) {
   959				ret = d_casefold_enable(src_dentry, &casefold_enable_src);
 > 960				if (ret)
   961					goto err;
   962			}
   963		}
   964	
   965		trans = bch2_trans_get(c);
   966	
   967		ret   = bch2_subvol_is_ro_trans(trans, src_dir->ei_inum.subvol) ?:
   968			bch2_subvol_is_ro_trans(trans, dst_dir->ei_inum.subvol);
   969		if (ret)
   970			goto err_tx_restart;
   971	
   972		if (inode_attr_changing(dst_dir, src_inode, Inode_opt_project)) {
   973			ret = bch2_fs_quota_transfer(c, src_inode,
   974						     dst_dir->ei_qid,
   975						     1 << QTYP_PRJ,
   976						     KEY_TYPE_QUOTA_PREALLOC);
   977			if (ret)
   978				goto err;
   979		}
   980	
   981		if (mode == BCH_RENAME_EXCHANGE &&
   982		    inode_attr_changing(src_dir, dst_inode, Inode_opt_project)) {
   983			ret = bch2_fs_quota_transfer(c, dst_inode,
   984						     src_dir->ei_qid,
   985						     1 << QTYP_PRJ,
   986						     KEY_TYPE_QUOTA_PREALLOC);
   987			if (ret)
   988				goto err;
   989		}
   990	retry:
   991		bch2_trans_begin(trans);
   992	
   993		ret = bch2_rename_trans(trans,
   994					inode_inum(src_dir), &src_dir_u,
   995					inode_inum(dst_dir), &dst_dir_u,
   996					&src_inode_u,
   997					&dst_inode_u,
   998					&src_dentry->d_name,
   999					&dst_dentry->d_name,
  1000					mode);
  1001		if (unlikely(ret))
  1002			goto err_tx_restart;
  1003	
  1004		if (whiteout) {
  1005			whiteout_inode_u = bch2_trans_kmalloc_nomemzero(trans, sizeof(*whiteout_inode_u));
  1006			ret = PTR_ERR_OR_ZERO(whiteout_inode_u);
  1007			if (unlikely(ret))
  1008				goto err_tx_restart;
  1009			bch2_inode_init_early(c, whiteout_inode_u);
  1010	
  1011			ret = bch2_create_trans(trans,
  1012						inode_inum(src_dir), &src_dir_u,
  1013						whiteout_inode_u,
  1014						&src_dentry->d_name,
  1015						from_kuid(i_user_ns(&src_dir->v), current_fsuid()),
  1016						from_kgid(i_user_ns(&src_dir->v), current_fsgid()),
  1017						S_IFCHR|WHITEOUT_MODE, 0,
  1018						NULL, NULL, (subvol_inum) { 0 }, 0) ?:
  1019			      bch2_quota_acct(c, bch_qid(whiteout_inode_u), Q_INO, 1,
  1020					      KEY_TYPE_QUOTA_PREALLOC);
  1021			if (unlikely(ret))
  1022				goto err_tx_restart;
  1023		}
  1024	
  1025		ret = bch2_trans_commit(trans, NULL, NULL, 0);
  1026		if (unlikely(ret)) {
  1027	err_tx_restart:
  1028			if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
  1029				goto retry;
  1030			goto err;
  1031		}
  1032	
  1033		BUG_ON(src_inode->v.i_ino != src_inode_u.bi_inum);
  1034		BUG_ON(dst_inode &&
  1035		       dst_inode->v.i_ino != dst_inode_u.bi_inum);
  1036	
  1037		bch2_inode_update_after_write(trans, src_dir, &src_dir_u,
  1038					      ATTR_MTIME|ATTR_CTIME|ATTR_SIZE);
  1039	
  1040		if (src_dir != dst_dir)
  1041			bch2_inode_update_after_write(trans, dst_dir, &dst_dir_u,
  1042						      ATTR_MTIME|ATTR_CTIME|ATTR_SIZE);
  1043	
  1044		bch2_inode_update_after_write(trans, src_inode, &src_inode_u,
  1045					      ATTR_CTIME);
  1046	
  1047		if (dst_inode)
  1048			bch2_inode_update_after_write(trans, dst_inode, &dst_inode_u,
  1049						      ATTR_CTIME);
  1050	err:
  1051		bch2_trans_put(trans);
  1052	
  1053		bch2_fs_quota_transfer(c, src_inode,
  1054				       bch_qid(&src_inode->ei_inode),
  1055				       1 << QTYP_PRJ,
  1056				       KEY_TYPE_QUOTA_NOCHECK);
  1057		if (dst_inode)
  1058			bch2_fs_quota_transfer(c, dst_inode,
  1059					       bch_qid(&dst_inode->ei_inode),
  1060					       1 << QTYP_PRJ,
  1061					       KEY_TYPE_QUOTA_NOCHECK);
  1062	
  1063		bch2_unlock_inodes(INODE_UPDATE_LOCK,
  1064				   src_dir,
  1065				   dst_dir,
  1066				   src_inode,
  1067				   dst_inode);
  1068	
  1069		d_casefold_enable_commit(&casefold_enable_dst, ret);
  1070		d_casefold_enable_commit(&casefold_enable_src, ret);
  1071	
  1072		return bch2_err_class(ret);
  1073	}
  1074	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2025-05-20  6:32 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202505201434.jPrDJIPG-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kent.overstreet@linux.dev \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox