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,