aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorNeilBrown <neil@brown.name>2025-03-14 09:32:54 +1100
committerChristian Brauner <brauner@kernel.org>2025-03-18 15:34:27 +0100
commit514b68711164b557342bc6169d898576fa905c0f (patch)
tree17d5419e6f6a4f2383409faf56d5d48b5569790b
parentfs: dedup handling of struct filename init and refcounts bumps (diff)
downloadwireguard-linux-514b68711164b557342bc6169d898576fa905c0f.tar.xz
wireguard-linux-514b68711164b557342bc6169d898576fa905c0f.zip
VFS/autofs: try_lookup_one_len() does not need any locks
try_lookup_one_len() is identical to lookup_one_unlocked() except that it doesn't include the call to lookup_slow(). The latter doesn't need the inode to be locked, so the former cannot either. So fix the documentation, remove the WARN_ON and fix the only caller to not take the lock. Signed-off-by: NeilBrown <neilb@suse.de> Link: https://lore.kernel.org/r/174190517441.9342.5956460781380903128@noble.neil.brown.name Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r--fs/autofs/dev-ioctl.c3
-rw-r--r--fs/namei.c5
2 files changed, 2 insertions, 6 deletions
diff --git a/fs/autofs/dev-ioctl.c b/fs/autofs/dev-ioctl.c
index 6d57efbb8110..c5a6aae12d2c 100644
--- a/fs/autofs/dev-ioctl.c
+++ b/fs/autofs/dev-ioctl.c
@@ -442,7 +442,6 @@ static int autofs_dev_ioctl_timeout(struct file *fp,
sbi->exp_timeout = timeout * HZ;
} else {
struct dentry *base = fp->f_path.dentry;
- struct inode *inode = base->d_inode;
int path_len = param->size - AUTOFS_DEV_IOCTL_SIZE - 1;
struct dentry *dentry;
struct autofs_info *ino;
@@ -460,9 +459,7 @@ static int autofs_dev_ioctl_timeout(struct file *fp,
"the parent autofs mount timeout which could "
"prevent shutdown\n");
- inode_lock_shared(inode);
dentry = try_lookup_one_len(param->path, base, path_len);
- inode_unlock_shared(inode);
if (IS_ERR_OR_NULL(dentry))
return dentry ? PTR_ERR(dentry) : -ENOENT;
ino = autofs_dentry_ino(dentry);
diff --git a/fs/namei.c b/fs/namei.c
index 345e20143b5d..b6eca442ab7a 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2864,15 +2864,14 @@ static int lookup_one_common(struct mnt_idmap *idmap,
* Note that this routine is purely a helper for filesystem usage and should
* not be called by generic code.
*
- * The caller must hold base->i_mutex.
+ * No locks need be held - only a counted reference to @base is needed.
+ *
*/
struct dentry *try_lookup_one_len(const char *name, struct dentry *base, int len)
{
struct qstr this;
int err;
- WARN_ON_ONCE(!inode_is_locked(base->d_inode));
-
err = lookup_one_common(&nop_mnt_idmap, name, base, len, &this);
if (err)
return ERR_PTR(err);