exportfs: use lookup_one_unlocked()

rather than locking the directory and using lookup_one(), just use
lookup_one_unlocked().  This keeps locking code centralised.

Signed-off-by: NeilBrown <neil@brown.name>
Link: https://lore.kernel.org/20250608230952.20539-5-neil@brown.name
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
NeilBrown 2025-06-09 09:09:36 +10:00 committed by Christian Brauner
parent 8668a0df07
commit ce34900389
No known key found for this signature in database
GPG key ID: 91C61BC06578DCA2

View file

@ -549,15 +549,13 @@ exportfs_decode_fh_raw(struct vfsmount *mnt, struct fid *fid, int fh_len,
goto err_result; goto err_result;
} }
inode_lock(target_dir->d_inode); nresult = lookup_one_unlocked(mnt_idmap(mnt), &QSTR(nbuf), target_dir);
nresult = lookup_one(mnt_idmap(mnt), &QSTR(nbuf), target_dir);
if (!IS_ERR(nresult)) { if (!IS_ERR(nresult)) {
if (unlikely(nresult->d_inode != result->d_inode)) { if (unlikely(nresult->d_inode != result->d_inode)) {
dput(nresult); dput(nresult);
nresult = ERR_PTR(-ESTALE); nresult = ERR_PTR(-ESTALE);
} }
} }
inode_unlock(target_dir->d_inode);
/* /*
* At this point we are done with the parent, but it's pinned * At this point we are done with the parent, but it's pinned
* by the child dentry anyway. * by the child dentry anyway.