On Tue, Jul 21, 2020 at 06:28:15PM +0200, Christoph Hellwig wrote:
Add a simple helper to symlink with a kernel space file name and switch
the early init code over to it. Remove the now unused ksys_symlink.
+int __init init_symlink(const char *oldname, const char *newname)
+{
+ struct filename *from = getname_kernel(oldname);
What the hell for? You are only using from ->name later.
+ struct dentry *dentry;
+ struct path path;
+ int error;
+
+ if (IS_ERR(from))
+ return PTR_ERR(from);
+ dentry = kern_path_create(AT_FDCWD, newname, &path, 0);
+ error = PTR_ERR(dentry);
+ if (IS_ERR(dentry))
+ goto out_putname;
+ error = security_path_symlink(&path, dentry, from->name);
+ if (!error)
+ error = vfs_symlink(path.dentry->d_inode, dentry, from->name);
+ done_path_create(&path, dentry);
+out_putname:
+ putname(from);
+ return error;
+}
And again, the same comment regarding the location of file.