mirror of https://github.com/torvalds/linux.git
fs: assert on I_FREEING not being set in iput() and iput_not_last()
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Link: https://patch.msgid.link/20251201132037.22835-1-mjguzik@gmail.com Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
222047f68e
commit
aa8aba61d4
|
|
@ -1968,7 +1968,7 @@ void iput(struct inode *inode)
|
|||
|
||||
retry:
|
||||
lockdep_assert_not_held(&inode->i_lock);
|
||||
VFS_BUG_ON_INODE(inode_state_read_once(inode) & I_CLEAR, inode);
|
||||
VFS_BUG_ON_INODE(inode_state_read_once(inode) & (I_FREEING | I_CLEAR), inode);
|
||||
/*
|
||||
* Note this assert is technically racy as if the count is bogusly
|
||||
* equal to one, then two CPUs racing to further drop it can both
|
||||
|
|
@ -2010,6 +2010,7 @@ EXPORT_SYMBOL(iput);
|
|||
*/
|
||||
void iput_not_last(struct inode *inode)
|
||||
{
|
||||
VFS_BUG_ON_INODE(inode_state_read_once(inode) & (I_FREEING | I_CLEAR), inode);
|
||||
VFS_BUG_ON_INODE(atomic_read(&inode->i_count) < 2, inode);
|
||||
|
||||
WARN_ON(atomic_sub_return(1, &inode->i_count) == 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue