]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
namei.c: switch user pathname imports to CLASS(filename{,_flags})
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 6 Dec 2025 18:01:06 +0000 (13:01 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 16 Jan 2026 17:52:03 +0000 (12:52 -0500)
filename_flags is used by user_path_at().  I suspect that mixing
LOOKUP_EMPTY with real lookup flags had been a mistake all along; the
former belongs to pathname import, the latter - to pathwalk.  Right now
none of the remaining in-tree callers of user_path_at() are getting
LOOKUP_EMPTY in flags, so user_path_at() could probably be switched
to CLASS(filename)...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index 1158beb9a399df8645984e8ad31f7792786c3fcb..25c786ab0542e6a96b132655309e6873264c09c5 100644 (file)
@@ -3031,11 +3031,8 @@ struct dentry *start_removing_user_path_at(int dfd,
                                           const char __user *name,
                                           struct path *path)
 {
-       struct filename *filename = getname(name);
-       struct dentry *res = __start_removing_path(dfd, filename, path);
-
-       putname(filename);
-       return res;
+       CLASS(filename, filename)(name);
+       return __start_removing_path(dfd, filename, path);
 }
 EXPORT_SYMBOL(start_removing_user_path_at);
 
@@ -3613,11 +3610,8 @@ int path_pts(struct path *path)
 int user_path_at(int dfd, const char __user *name, unsigned flags,
                 struct path *path)
 {
-       struct filename *filename = getname_flags(name, flags);
-       int ret = filename_lookup(dfd, filename, flags, path, NULL);
-
-       putname(filename);
-       return ret;
+       CLASS(filename_flags, filename)(name, flags);
+       return filename_lookup(dfd, filename, flags, path, NULL);
 }
 EXPORT_SYMBOL(user_path_at);
 
@@ -4976,11 +4970,8 @@ inline struct dentry *start_creating_user_path(
        int dfd, const char __user *pathname,
        struct path *path, unsigned int lookup_flags)
 {
-       struct filename *filename = getname(pathname);
-       struct dentry *res = filename_create(dfd, filename, path, lookup_flags);
-
-       putname(filename);
-       return res;
+       CLASS(filename, filename)(pathname);
+       return filename_create(dfd, filename, path, lookup_flags);
 }
 EXPORT_SYMBOL(start_creating_user_path);