From: Al Viro Date: Sat, 6 Dec 2025 18:01:06 +0000 (-0500) Subject: namei.c: switch user pathname imports to CLASS(filename{,_flags}) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=904f58b50711babeb6e1383701e27d40a336908c;p=thirdparty%2Flinux.git namei.c: switch user pathname imports to CLASS(filename{,_flags}) 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 --- diff --git a/fs/namei.c b/fs/namei.c index 1158beb9a399d..25c786ab0542e 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -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);