From: Jori Koolstra Date: Thu, 28 May 2026 17:58:47 +0000 (+0000) Subject: vfs: replace ints with enum last_type for LAST_XXX X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=318643721de396012da102723f337f35ba7ec1e9;p=thirdparty%2Fkernel%2Flinux.git vfs: replace ints with enum last_type for LAST_XXX 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 Link: https://patch.msgid.link/20260528175854.57626-2-jkoolstra@xs4all.nl Signed-off-by: Christian Brauner (Amutable) --- diff --git a/fs/namei.c b/fs/namei.c index 05291e6f4bbab..026165f6fcb62 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -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;