Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

non-consuming variant of do_mkdirat()

similar to previous commit; replacement is filename_mkdirat()

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

Al Viro dc912db1 da72b76a

+12 -11
+1 -1
Documentation/filesystems/porting.rst
··· 1343 1343 do_linkat(), do_symlinkat(), do_mkdirat(), do_mknodat(), do_unlinkat() 1344 1344 and do_rmdir()) are getting replaced with non-consuming analogues 1345 1345 (filename_renameat2(), etc.) Replaced so far: do_renameat2(), do_linkat(), 1346 - do_symlinkat(). 1346 + do_symlinkat(), do_mkdirat().
+2 -1
fs/init.c
··· 164 164 165 165 int __init init_mkdir(const char *pathname, umode_t mode) 166 166 { 167 - return do_mkdirat(AT_FDCWD, getname_kernel(pathname), mode); 167 + CLASS(filename_kernel, name)(pathname); 168 + return filename_mkdirat(AT_FDCWD, name, mode); 168 169 } 169 170 170 171 int __init init_rmdir(const char *pathname)
+1 -1
fs/internal.h
··· 59 59 int may_linkat(struct mnt_idmap *idmap, const struct path *link); 60 60 int filename_renameat2(int olddfd, struct filename *oldname, int newdfd, 61 61 struct filename *newname, unsigned int flags); 62 - int do_mkdirat(int dfd, struct filename *name, umode_t mode); 62 + int filename_mkdirat(int dfd, struct filename *name, umode_t mode); 63 63 int do_mknodat(int dfd, struct filename *name, umode_t mode, unsigned int dev); 64 64 int filename_symlinkat(struct filename *from, int newdfd, struct filename *to); 65 65 int filename_linkat(int olddfd, struct filename *old, int newdfd,
+6 -7
fs/namei.c
··· 5207 5207 } 5208 5208 EXPORT_SYMBOL(vfs_mkdir); 5209 5209 5210 - int do_mkdirat(int dfd, struct filename *name, umode_t mode) 5210 + int filename_mkdirat(int dfd, struct filename *name, umode_t mode) 5211 5211 { 5212 5212 struct dentry *dentry; 5213 5213 struct path path; ··· 5217 5217 5218 5218 retry: 5219 5219 dentry = filename_create(dfd, name, &path, lookup_flags); 5220 - error = PTR_ERR(dentry); 5221 5220 if (IS_ERR(dentry)) 5222 - goto out_putname; 5221 + return PTR_ERR(dentry); 5223 5222 5224 5223 error = security_path_mkdir(&path, dentry, 5225 5224 mode_strip_umask(path.dentry->d_inode, mode)); ··· 5238 5239 lookup_flags |= LOOKUP_REVAL; 5239 5240 goto retry; 5240 5241 } 5241 - out_putname: 5242 - putname(name); 5243 5242 return error; 5244 5243 } 5245 5244 5246 5245 SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode) 5247 5246 { 5248 - return do_mkdirat(dfd, getname(pathname), mode); 5247 + CLASS(filename, name)(pathname); 5248 + return filename_mkdirat(dfd, name, mode); 5249 5249 } 5250 5250 5251 5251 SYSCALL_DEFINE2(mkdir, const char __user *, pathname, umode_t, mode) 5252 5252 { 5253 - return do_mkdirat(AT_FDCWD, getname(pathname), mode); 5253 + CLASS(filename, name)(pathname); 5254 + return filename_mkdirat(AT_FDCWD, name, mode); 5254 5255 } 5255 5256 5256 5257 /**
+2 -1
io_uring/fs.c
··· 182 182 int io_mkdirat(struct io_kiocb *req, unsigned int issue_flags) 183 183 { 184 184 struct io_mkdir *mkd = io_kiocb_to_cmd(req, struct io_mkdir); 185 + CLASS(filename_complete_delayed, name)(&mkd->filename); 185 186 int ret; 186 187 187 188 WARN_ON_ONCE(issue_flags & IO_URING_F_NONBLOCK); 188 189 189 - ret = do_mkdirat(mkd->dfd, complete_getname(&mkd->filename), mkd->mode); 190 + ret = filename_mkdirat(mkd->dfd, name, mkd->mode); 190 191 191 192 req->flags &= ~REQ_F_NEED_CLEANUP; 192 193 io_req_set_res(req, ret, 0);