On Tue, Oct 18, 2022 at 5:58 AM Ian Kent <raven@xxxxxxxxxx> wrote:
In kernfs_dop_revalidate() when the passed in dentry is negative theYou meant d_lock.
dentry directory is checked to see if it has changed and if so the
negative dentry is discarded so it can refreshed. During this check
the dentry inode i_lock is taken to mitigate against a possible
concurrent rename.
But if it's racing with a rename, becuase the dentry is negative, it
can't be the source it must be the target and it must be going to do
a d_move() otherwise the rename will return an error.
In this case the parent dentry of the target will not change, it will
be the same over the d_move(), only the source dentry parent may change
so the inode i_lock isn't needed.
Same for the commit title.