Loading fs/namei.c +24 −24 Original line number Diff line number Diff line Loading @@ -2038,19 +2038,6 @@ static int filename_lookup(int dfd, struct filename *name, return retval; } static int do_path_lookup(int dfd, const char *name, unsigned int flags, struct nameidata *nd) { struct filename *filename = getname_kernel(name); int retval = PTR_ERR(filename); if (!IS_ERR(filename)) { retval = filename_lookup(dfd, filename, flags, nd); putname(filename); } return retval; } /* does lookup, returns the object with parent locked */ struct dentry *kern_path_locked(const char *name, struct path *path) { Loading Loading @@ -2088,9 +2075,15 @@ struct dentry *kern_path_locked(const char *name, struct path *path) int kern_path(const char *name, unsigned int flags, struct path *path) { struct nameidata nd; int res = do_path_lookup(AT_FDCWD, name, flags, &nd); struct filename *filename = getname_kernel(name); int res = PTR_ERR(filename); if (!IS_ERR(filename)) { res = filename_lookup(AT_FDCWD, filename, flags, &nd); putname(filename); if (!res) *path = nd.path; } return res; } EXPORT_SYMBOL(kern_path); Loading @@ -2107,15 +2100,22 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, const char *name, unsigned int flags, struct path *path) { struct filename *filename = getname_kernel(name); int err = PTR_ERR(filename); BUG_ON(flags & LOOKUP_PARENT); /* the first argument of filename_lookup() is ignored with LOOKUP_ROOT */ if (!IS_ERR(filename)) { struct nameidata nd; int err; nd.root.dentry = dentry; nd.root.mnt = mnt; BUG_ON(flags & LOOKUP_PARENT); /* the first argument of do_path_lookup() is ignored with LOOKUP_ROOT */ err = do_path_lookup(AT_FDCWD, name, flags | LOOKUP_ROOT, &nd); err = filename_lookup(AT_FDCWD, filename, flags | LOOKUP_ROOT, &nd); if (!err) *path = nd.path; putname(filename); } return err; } EXPORT_SYMBOL(vfs_path_lookup); Loading Loading
fs/namei.c +24 −24 Original line number Diff line number Diff line Loading @@ -2038,19 +2038,6 @@ static int filename_lookup(int dfd, struct filename *name, return retval; } static int do_path_lookup(int dfd, const char *name, unsigned int flags, struct nameidata *nd) { struct filename *filename = getname_kernel(name); int retval = PTR_ERR(filename); if (!IS_ERR(filename)) { retval = filename_lookup(dfd, filename, flags, nd); putname(filename); } return retval; } /* does lookup, returns the object with parent locked */ struct dentry *kern_path_locked(const char *name, struct path *path) { Loading Loading @@ -2088,9 +2075,15 @@ struct dentry *kern_path_locked(const char *name, struct path *path) int kern_path(const char *name, unsigned int flags, struct path *path) { struct nameidata nd; int res = do_path_lookup(AT_FDCWD, name, flags, &nd); struct filename *filename = getname_kernel(name); int res = PTR_ERR(filename); if (!IS_ERR(filename)) { res = filename_lookup(AT_FDCWD, filename, flags, &nd); putname(filename); if (!res) *path = nd.path; } return res; } EXPORT_SYMBOL(kern_path); Loading @@ -2107,15 +2100,22 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, const char *name, unsigned int flags, struct path *path) { struct filename *filename = getname_kernel(name); int err = PTR_ERR(filename); BUG_ON(flags & LOOKUP_PARENT); /* the first argument of filename_lookup() is ignored with LOOKUP_ROOT */ if (!IS_ERR(filename)) { struct nameidata nd; int err; nd.root.dentry = dentry; nd.root.mnt = mnt; BUG_ON(flags & LOOKUP_PARENT); /* the first argument of do_path_lookup() is ignored with LOOKUP_ROOT */ err = do_path_lookup(AT_FDCWD, name, flags | LOOKUP_ROOT, &nd); err = filename_lookup(AT_FDCWD, filename, flags | LOOKUP_ROOT, &nd); if (!err) *path = nd.path; putname(filename); } return err; } EXPORT_SYMBOL(vfs_path_lookup); Loading