]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
VFS: merge lookup_one_qstr_excl_raw() back into lookup_one_qstr_excl()
authorNeilBrown <neil@brown.name>
Sun, 8 Jun 2025 23:09:33 +0000 (09:09 +1000)
committerChristian Brauner <brauner@kernel.org>
Wed, 11 Jun 2025 11:44:15 +0000 (13:44 +0200)
The effect of lookup_one_qstr_excl_raw() can be achieved by passing
LOOKUP_CREATE() to lookup_one_qstr_excl() - we don't need a separate
function.

Signed-off-by: NeilBrown <neil@brown.name>
Link: https://lore.kernel.org/20250608230952.20539-2-neil@brown.name
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/namei.c

index 4bb889fc980b7d44914e11ec38ae3e8fdfbafadd..dc42bfac5c570e79c3afd36dcdb0a05072959b5f 100644 (file)
@@ -1665,9 +1665,17 @@ static struct dentry *lookup_dcache(const struct qstr *name,
        return dentry;
 }
 
-static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
-                                              struct dentry *base,
-                                              unsigned int flags)
+/*
+ * Parent directory has inode locked exclusive.  This is one
+ * and only case when ->lookup() gets called on non in-lookup
+ * dentries - as the matter of fact, this only gets called
+ * when directory is guaranteed to have no in-lookup children
+ * at all.
+ * Will return -ENOENT if name isn't found and LOOKUP_CREATE wasn't passed.
+ * Will return -EEXIST if name is found and LOOKUP_EXCL was passed.
+ */
+struct dentry *lookup_one_qstr_excl(const struct qstr *name,
+                                   struct dentry *base, unsigned int flags)
 {
        struct dentry *dentry;
        struct dentry *old;
@@ -1675,7 +1683,7 @@ static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
 
        dentry = lookup_dcache(name, base, flags);
        if (dentry)
-               return dentry;
+               goto found;
 
        /* Don't create child dentry for a dead directory. */
        dir = base->d_inode;
@@ -1691,24 +1699,7 @@ static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
                dput(dentry);
                dentry = old;
        }
-       return dentry;
-}
-
-/*
- * Parent directory has inode locked exclusive.  This is one
- * and only case when ->lookup() gets called on non in-lookup
- * dentries - as the matter of fact, this only gets called
- * when directory is guaranteed to have no in-lookup children
- * at all.
- * Will return -ENOENT if name isn't found and LOOKUP_CREATE wasn't passed.
- * Will return -EEXIST if name is found and LOOKUP_EXCL was passed.
- */
-struct dentry *lookup_one_qstr_excl(const struct qstr *name,
-                                   struct dentry *base, unsigned int flags)
-{
-       struct dentry *dentry;
-
-       dentry = lookup_one_qstr_excl_raw(name, base, flags);
+found:
        if (IS_ERR(dentry))
                return dentry;
        if (d_is_negative(dentry) && !(flags & LOOKUP_CREATE)) {
@@ -2790,7 +2781,7 @@ struct dentry *kern_path_locked_negative(const char *name, struct path *path)
        if (unlikely(type != LAST_NORM))
                return ERR_PTR(-EINVAL);
        inode_lock_nested(parent_path.dentry->d_inode, I_MUTEX_PARENT);
-       d = lookup_one_qstr_excl_raw(&last, parent_path.dentry, 0);
+       d = lookup_one_qstr_excl(&last, parent_path.dentry, LOOKUP_CREATE);
        if (IS_ERR(d)) {
                inode_unlock(parent_path.dentry->d_inode);
                return d;