On Tue 16-05-23 21:58:36, Darrick J. Wong wrote:
On Thu, Jan 26, 2023 at 12:22:21PM +0100, Jan Kara wrote:
When we are renaming a directory to a different directory, we need to update '..' entry in the moved directory. However nothing prevents moved directory from being modified and even converted from the inline format to the normal format. When such race happens the rename code gets confused and we crash. Fix the problem by locking the moved directory.
Four months later, I have a question --
Is it necessary for ext4_cross_rename to inode_lock_nested on both old.inode and new.inode? We're resetting the dotdot entries on both children in that case, which means that we also need to lock out inline data conversions, right?
Ouch, you're right. In that path we need to lock both source & target directories since lock_two_nondirectories() call in vfs_rename() will not lock them... I'll send a patch. Thanks for spotting this!
Honza