Re: [PATCH] f2fs: call unlock_new_inode() before d_instantiate()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018/4/19 6:48, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@xxxxxxxxxx>
> 
> xfstest generic/429 sometimes hangs on f2fs, caused by a thread being
> unable to take a directory's i_rwsem for write in vfs_rmdir().  In the
> test, one thread repeatedly creates and removes a directory, and other
> threads repeatedly look up a file in the directory.  The bug is that
> f2fs_mkdir() calls d_instantiate() before unlock_new_inode(), resulting
> in the directory inode being exposed to lookups before it has been fully
> initialized.  And with CONFIG_DEBUG_LOCK_ALLOC, unlock_new_inode()
> reinitializes ->i_rwsem, corrupting its state when it is already held.
> 
> Fix it by calling unlock_new_inode() before d_instantiate().  This
> matches what other filesystems do.
> 
> Fixes: 57397d86c62d ("f2fs: add inode operations for special inodes")
> Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>

Reviewed-by: Chao Yu <yuchao0@xxxxxxxxxx>

Thanks,




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux