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_mknodat()

similar to previous commit; replacement is filename_mknodat()

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

Al Viro 88fdc276 dc912db1

+12 -12
+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(), do_mkdirat(). 1346 + do_symlinkat(), do_mkdirat(), do_mknodat().
+2 -1
fs/init.c
··· 140 140 141 141 int __init init_mknod(const char *filename, umode_t mode, unsigned int dev) 142 142 { 143 - return do_mknodat(AT_FDCWD, getname_kernel(filename), mode, dev); 143 + CLASS(filename_kernel, name)(filename); 144 + return filename_mknodat(AT_FDCWD, name, mode, dev); 144 145 } 145 146 146 147 int __init init_link(const char *oldname, const char *newname)
+1 -1
fs/internal.h
··· 60 60 int filename_renameat2(int olddfd, struct filename *oldname, int newdfd, 61 61 struct filename *newname, unsigned int flags); 62 62 int filename_mkdirat(int dfd, struct filename *name, umode_t mode); 63 - int do_mknodat(int dfd, struct filename *name, umode_t mode, unsigned int dev); 63 + int filename_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, 66 66 struct filename *new, int flags);
+8 -9
fs/namei.c
··· 5072 5072 } 5073 5073 } 5074 5074 5075 - int do_mknodat(int dfd, struct filename *name, umode_t mode, 5076 - unsigned int dev) 5075 + int filename_mknodat(int dfd, struct filename *name, umode_t mode, 5076 + unsigned int dev) 5077 5077 { 5078 5078 struct delegated_inode di = { }; 5079 5079 struct mnt_idmap *idmap; ··· 5084 5084 5085 5085 error = may_mknod(mode); 5086 5086 if (error) 5087 - goto out1; 5087 + return error; 5088 5088 retry: 5089 5089 dentry = filename_create(dfd, name, &path, lookup_flags); 5090 - error = PTR_ERR(dentry); 5091 5090 if (IS_ERR(dentry)) 5092 - goto out1; 5091 + return PTR_ERR(dentry); 5093 5092 5094 5093 error = security_path_mknod(&path, dentry, 5095 5094 mode_strip_umask(path.dentry->d_inode, mode), dev); ··· 5122 5123 lookup_flags |= LOOKUP_REVAL; 5123 5124 goto retry; 5124 5125 } 5125 - out1: 5126 - putname(name); 5127 5126 return error; 5128 5127 } 5129 5128 5130 5129 SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, 5131 5130 unsigned int, dev) 5132 5131 { 5133 - return do_mknodat(dfd, getname(filename), mode, dev); 5132 + CLASS(filename, name)(filename); 5133 + return filename_mknodat(dfd, name, mode, dev); 5134 5134 } 5135 5135 5136 5136 SYSCALL_DEFINE3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev) 5137 5137 { 5138 - return do_mknodat(AT_FDCWD, getname(filename), mode, dev); 5138 + CLASS(filename, name)(filename); 5139 + return filename_mknodat(AT_FDCWD, name, mode, dev); 5139 5140 } 5140 5141 5141 5142 /**