]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
vfs: replace ints with enum last_type for LAST_XXX
authorJori Koolstra <jkoolstra@xs4all.nl>
Thu, 28 May 2026 17:58:47 +0000 (17:58 +0000)
committerChristian Brauner <brauner@kernel.org>
Fri, 29 May 2026 07:47:02 +0000 (09:47 +0200)
Several functions in namei.c take an "int *type" parameter, such as
filename_parentat(). To know what values this can take you have to find
the anonymous struct that defines the LAST_XXX values. Define an enum
last_type to make this type explicit.

Signed-off-by: Jori Koolstra <jkoolstra@xs4all.nl>
Link: https://patch.msgid.link/20260528175854.57626-2-jkoolstra@xs4all.nl
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/namei.c

index 05291e6f4bbabf08280edd15aae4ca7d87fce1ab..026165f6fcb62440dd64e1b2187aa1b4c470453f 100644 (file)
@@ -132,7 +132,7 @@ static struct kmem_cache *__names_cache __ro_after_init;
 /*
  * Type of the last component on LOOKUP_PARENT
  */
-enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT};
+enum last_type {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT};
 
 void __init filename_init(void)
 {
@@ -732,7 +732,7 @@ struct nameidata {
        struct inode    *inode; /* path.dentry.d_inode */
        unsigned int    flags, state;
        unsigned        seq, next_seq, m_seq, r_seq;
-       int             last_type;
+       enum last_type  last_type;
        unsigned        depth;
        int             total_link_count;
        struct saved {
@@ -2225,7 +2225,7 @@ in_root:
        return dget(nd->path.dentry);
 }
 
-static const char *handle_dots(struct nameidata *nd, int type)
+static const char *handle_dots(struct nameidata *nd, enum last_type type)
 {
        if (type == LAST_DOTDOT) {
                const char *error = NULL;
@@ -2873,7 +2873,7 @@ static int path_parentat(struct nameidata *nd, unsigned flags,
 /* Note: this does not consume "name" */
 static int __filename_parentat(int dfd, struct filename *name,
                               unsigned int flags, struct path *parent,
-                              struct qstr *last, int *type,
+                              struct qstr *last, enum last_type *type,
                               const struct path *root)
 {
        int retval;
@@ -2898,7 +2898,7 @@ static int __filename_parentat(int dfd, struct filename *name,
 
 static int filename_parentat(int dfd, struct filename *name,
                             unsigned int flags, struct path *parent,
-                            struct qstr *last, int *type)
+                            struct qstr *last, enum last_type *type)
 {
        return __filename_parentat(dfd, name, flags, parent, last, type, NULL);
 }
@@ -2966,7 +2966,8 @@ static struct dentry *__start_removing_path(int dfd, struct filename *name,
        struct path parent_path __free(path_put) = {};
        struct dentry *d;
        struct qstr last;
-       int type, error;
+       enum last_type type;
+       int error;
 
        error = filename_parentat(dfd, name, 0, &parent_path, &last, &type);
        if (error)
@@ -3012,7 +3013,8 @@ struct dentry *kern_path_parent(const char *name, struct path *path)
        CLASS(filename_kernel, filename)(name);
        struct dentry *d;
        struct qstr last;
-       int type, error;
+       enum last_type type;
+       int error;
 
        error = filename_parentat(AT_FDCWD, filename, 0, &parent_path, &last, &type);
        if (error)
@@ -3062,7 +3064,7 @@ int vfs_path_parent_lookup(struct filename *filename, unsigned int flags,
                           struct path *parent, struct qstr *last,
                           const struct path *root)
 {
-       int type;
+       enum last_type type;
        int err =  __filename_parentat(AT_FDCWD, filename, flags, parent, last,
                                       &type, root);
        if (err)
@@ -4941,7 +4943,7 @@ static struct dentry *filename_create(int dfd, struct filename *name,
        bool want_dir = lookup_flags & LOOKUP_DIRECTORY;
        unsigned int reval_flag = lookup_flags & LOOKUP_REVAL;
        unsigned int create_flags = LOOKUP_CREATE | LOOKUP_EXCL;
-       int type;
+       enum last_type type;
        int error;
 
        error = filename_parentat(dfd, name, reval_flag, path, &last, &type);
@@ -5403,7 +5405,7 @@ int filename_rmdir(int dfd, struct filename *name)
        struct dentry *dentry;
        struct path path;
        struct qstr last;
-       int type;
+       enum last_type type;
        unsigned int lookup_flags = 0;
        struct delegated_inode delegated_inode = { };
 retry:
@@ -5412,6 +5414,8 @@ retry:
                return error;
 
        switch (type) {
+       case LAST_NORM:
+               break;
        case LAST_DOTDOT:
                error = -ENOTEMPTY;
                goto exit2;
@@ -5545,7 +5549,7 @@ int filename_unlinkat(int dfd, struct filename *name)
        struct dentry *dentry;
        struct path path;
        struct qstr last;
-       int type;
+       enum last_type type;
        struct inode *inode;
        struct delegated_inode delegated_inode = { };
        unsigned int lookup_flags = 0;
@@ -6112,7 +6116,7 @@ int filename_renameat2(int olddfd, struct filename *from,
        struct renamedata rd;
        struct path old_path, new_path;
        struct qstr old_last, new_last;
-       int old_type, new_type;
+       enum last_type old_type, new_type;
        struct delegated_inode delegated_inode = { };
        unsigned int lookup_flags = 0;
        bool should_retry = false;