cut down the number of do_path_lookup() callers
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 22 Jan 2015 07:16:49 +0000 (02:16 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 23 Jan 2015 05:22:19 +0000 (00:22 -0500)
... and don't bother with new struct filename when we already have one

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

index bc35b02883bb968812a7ec7cb62f4e1ff6e88de3..73fcf4280d6e1cd2176c9c4f21e079bffc303ec2 100644 (file)
@@ -2046,7 +2046,8 @@ struct dentry *kern_path_locked(const char *name, struct path *path)
 {
        struct nameidata nd;
        struct dentry *d;
-       int err = do_path_lookup(AT_FDCWD, name, LOOKUP_PARENT, &nd);
+       struct filename filename = {.name = name};
+       int err = filename_lookup(AT_FDCWD, &filename, LOOKUP_PARENT, &nd);
        if (err)
                return ERR_PTR(err);
        if (nd.last_type != LAST_NORM) {
@@ -3290,7 +3291,7 @@ struct file *do_file_open_root(struct dentry *dentry, struct vfsmount *mnt,
        return file;
 }
 
-struct dentry *kern_path_create(int dfd, const char *pathname,
+static struct dentry *filename_create(int dfd, struct filename *name,
                                struct path *path, unsigned int lookup_flags)
 {
        struct dentry *dentry = ERR_PTR(-EEXIST);
@@ -3305,7 +3306,7 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
         */
        lookup_flags &= LOOKUP_REVAL;
 
-       error = do_path_lookup(dfd, pathname, LOOKUP_PARENT|lookup_flags, &nd);
+       error = filename_lookup(dfd, name, LOOKUP_PARENT|lookup_flags, &nd);
        if (error)
                return ERR_PTR(error);
 
@@ -3359,6 +3360,13 @@ out:
        path_put(&nd.path);
        return dentry;
 }
+
+struct dentry *kern_path_create(int dfd, const char *pathname,
+                               struct path *path, unsigned int lookup_flags)
+{
+       struct filename filename = {.name = pathname};
+       return filename_create(dfd, &filename, path, lookup_flags);
+}
 EXPORT_SYMBOL(kern_path_create);
 
 void done_path_create(struct path *path, struct dentry *dentry)
@@ -3377,7 +3385,7 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
        struct dentry *res;
        if (IS_ERR(tmp))
                return ERR_CAST(tmp);
-       res = kern_path_create(dfd, tmp->name, path, lookup_flags);
+       res = filename_create(dfd, tmp, path, lookup_flags);
        putname(tmp);
        return res;
 }