[<prev] [next>] [day] [month] [year] [list]
Message-ID: <914fe9e7-8597-4789-b995-850449885e0d@stanley.mountain>
Date: Sun, 16 Feb 2025 18:07:57 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: oe-kbuild@...ts.linux.dev, Zhang Yi <yi.zhang@...wei.com>
Cc: lkp@...el.com, oe-kbuild-all@...ts.linux.dev,
linux-ext4@...r.kernel.org, Theodore Ts'o <tytso@....edu>,
Jan Kara <jack@...e.cz>, Ojaswin Mujoo <ojaswin@...ux.ibm.com>
Subject: [tytso-ext4:test 13/15] fs/ext4/extents.c:4780 ext4_fallocate()
warn: inconsistent returns '&inode->i_rwsem'.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git test
head: e5a9a1fce162be14c6f1ac325faac48b1a7dea9e
commit: 2890e5e0f49e10f3dadc5f7b7ea434e3e77e12a6 [13/15] ext4: move out common parts into ext4_fallocate()
config: i386-randconfig-141-20250214 (https://download.01.org/0day-ci/archive/20250214/202502142300.QWZQEt11-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
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>
| Reported-by: Dan Carpenter <dan.carpenter@...aro.org>
| Closes: https://lore.kernel.org/r/202502142300.QWZQEt11-lkp@intel.com/
smatch warnings:
fs/ext4/extents.c:4780 ext4_fallocate() warn: inconsistent returns '&inode->i_rwsem'.
vim +4780 fs/ext4/extents.c
2fe17c1075836b Christoph Hellwig 2011-01-14 4715 long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
a2df2a63407803 Amit Arora 2007-07-17 4716 {
496ad9aa8ef448 Al Viro 2013-01-23 4717 struct inode *inode = file_inode(file);
2890e5e0f49e10 Zhang Yi 2024-12-20 4718 struct address_space *mapping = file->f_mapping;
fd2f764826df54 Zhang Yi 2024-12-20 4719 int ret;
a2df2a63407803 Amit Arora 2007-07-17 4720
2058f83a728adf Michael Halcrow 2015-04-12 4721 /*
2058f83a728adf Michael Halcrow 2015-04-12 4722 * Encrypted inodes can't handle collapse range or insert
2058f83a728adf Michael Halcrow 2015-04-12 4723 * range since we would need to re-encrypt blocks with a
2058f83a728adf Michael Halcrow 2015-04-12 4724 * different IV or XTS tweak (which are based on the logical
2058f83a728adf Michael Halcrow 2015-04-12 4725 * block number).
2058f83a728adf Michael Halcrow 2015-04-12 4726 */
592ddec7578a33 Chandan Rajendra 2018-12-12 4727 if (IS_ENCRYPTED(inode) &&
457b1e353c739a Eric Biggers 2019-12-26 4728 (mode & (FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_INSERT_RANGE)))
2058f83a728adf Michael Halcrow 2015-04-12 4729 return -EOPNOTSUPP;
2058f83a728adf Michael Halcrow 2015-04-12 4730
a4bb6b64e39abc Allison Henderson 2011-05-25 4731 /* Return error if mode is not supported */
9eb79482a97152 Namjae Jeon 2014-02-23 4732 if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE |
331573febb6a22 Namjae Jeon 2015-06-09 4733 FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE |
331573febb6a22 Namjae Jeon 2015-06-09 4734 FALLOC_FL_INSERT_RANGE))
a4bb6b64e39abc Allison Henderson 2011-05-25 4735 return -EOPNOTSUPP;
a4bb6b64e39abc Allison Henderson 2011-05-25 4736
f87c7a4b084afc Baokun Li 2022-04-28 4737 inode_lock(inode);
f87c7a4b084afc Baokun Li 2022-04-28 4738 ret = ext4_convert_inline_data(inode);
f87c7a4b084afc Baokun Li 2022-04-28 4739 if (ret)
ea3f17efd36b56 Zhang Yi 2024-12-20 4740 goto out_inode_lock;
f87c7a4b084afc Baokun Li 2022-04-28 4741
2890e5e0f49e10 Zhang Yi 2024-12-20 4742 /* Wait all existing dio workers, newcomers will block on i_rwsem */
2890e5e0f49e10 Zhang Yi 2024-12-20 4743 inode_dio_wait(inode);
2890e5e0f49e10 Zhang Yi 2024-12-20 4744
2890e5e0f49e10 Zhang Yi 2024-12-20 4745 ret = file_modified(file);
2890e5e0f49e10 Zhang Yi 2024-12-20 4746 if (ret)
2890e5e0f49e10 Zhang Yi 2024-12-20 4747 return ret;
goto out_inode_lock;
2890e5e0f49e10 Zhang Yi 2024-12-20 4748
2890e5e0f49e10 Zhang Yi 2024-12-20 4749 if ((mode & FALLOC_FL_MODE_MASK) == FALLOC_FL_ALLOCATE_RANGE) {
2890e5e0f49e10 Zhang Yi 2024-12-20 4750 ret = ext4_do_fallocate(file, offset, len, mode);
2890e5e0f49e10 Zhang Yi 2024-12-20 4751 goto out_inode_lock;
2890e5e0f49e10 Zhang Yi 2024-12-20 4752 }
2890e5e0f49e10 Zhang Yi 2024-12-20 4753
2890e5e0f49e10 Zhang Yi 2024-12-20 4754 /*
2890e5e0f49e10 Zhang Yi 2024-12-20 4755 * Follow-up operations will drop page cache, hold invalidate lock
2890e5e0f49e10 Zhang Yi 2024-12-20 4756 * to prevent page faults from reinstantiating pages we have
2890e5e0f49e10 Zhang Yi 2024-12-20 4757 * released from page cache.
2890e5e0f49e10 Zhang Yi 2024-12-20 4758 */
2890e5e0f49e10 Zhang Yi 2024-12-20 4759 filemap_invalidate_lock(mapping);
2890e5e0f49e10 Zhang Yi 2024-12-20 4760
2890e5e0f49e10 Zhang Yi 2024-12-20 4761 ret = ext4_break_layouts(inode);
2890e5e0f49e10 Zhang Yi 2024-12-20 4762 if (ret)
2890e5e0f49e10 Zhang Yi 2024-12-20 4763 goto out_invalidate_lock;
2890e5e0f49e10 Zhang Yi 2024-12-20 4764
fd2f764826df54 Zhang Yi 2024-12-20 4765 if (mode & FALLOC_FL_PUNCH_HOLE)
ad5cd4f4ee4d5f Darrick J. Wong 2022-03-08 4766 ret = ext4_punch_hole(file, offset, len);
fd2f764826df54 Zhang Yi 2024-12-20 4767 else if (mode & FALLOC_FL_COLLAPSE_RANGE)
ad5cd4f4ee4d5f Darrick J. Wong 2022-03-08 4768 ret = ext4_collapse_range(file, offset, len);
fd2f764826df54 Zhang Yi 2024-12-20 4769 else if (mode & FALLOC_FL_INSERT_RANGE)
ad5cd4f4ee4d5f Darrick J. Wong 2022-03-08 4770 ret = ext4_insert_range(file, offset, len);
fd2f764826df54 Zhang Yi 2024-12-20 4771 else if (mode & FALLOC_FL_ZERO_RANGE)
aa75f4d3daaeb1 Harshad Shirwadkar 2020-10-15 4772 ret = ext4_zero_range(file, offset, len, mode);
fd2f764826df54 Zhang Yi 2024-12-20 4773 else
2890e5e0f49e10 Zhang Yi 2024-12-20 4774 ret = -EOPNOTSUPP;
2890e5e0f49e10 Zhang Yi 2024-12-20 4775
2890e5e0f49e10 Zhang Yi 2024-12-20 4776 out_invalidate_lock:
2890e5e0f49e10 Zhang Yi 2024-12-20 4777 filemap_invalidate_unlock(mapping);
ea3f17efd36b56 Zhang Yi 2024-12-20 4778 out_inode_lock:
ea3f17efd36b56 Zhang Yi 2024-12-20 4779 inode_unlock(inode);
0e8b6879f3c234 Lukas Czerner 2014-03-18 @4780 return ret;
a2df2a63407803 Amit Arora 2007-07-17 4781 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists