[PATCH] new helper - kern_path()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 2 Aug 2008 04:49:18 +0000 (00:49 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 23 Oct 2008 07:34:19 +0000 (03:34 -0400)
Analog of lookup_path(), takes struct path *.

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

index 4ea63ed..4a56f9b 100644 (file)
@@ -1106,6 +1106,15 @@ int path_lookup(const char *name, unsigned int flags,
        return do_path_lookup(AT_FDCWD, name, flags, nd);
 }
 
+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);
+       if (!res)
+               *path = nd.path;
+       return res;
+}
+
 /**
  * vfs_path_lookup - lookup a file path relative to a dentry-vfsmount pair
  * @dentry:  pointer to dentry of the base directory
@@ -2855,6 +2864,7 @@ EXPORT_SYMBOL(__page_symlink);
 EXPORT_SYMBOL(page_symlink);
 EXPORT_SYMBOL(page_symlink_inode_operations);
 EXPORT_SYMBOL(path_lookup);
+EXPORT_SYMBOL(kern_path);
 EXPORT_SYMBOL(vfs_path_lookup);
 EXPORT_SYMBOL(inode_permission);
 EXPORT_SYMBOL(vfs_permission);
index 68f8c32..221e8bc 100644 (file)
@@ -61,6 +61,8 @@ extern int user_path_at(int, const char __user *, unsigned, struct path *);
 #define user_path_dir(name, path) \
        user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path)
 
+extern int kern_path(const char *, unsigned, struct path *);
+
 extern int path_lookup(const char *, unsigned, struct nameidata *);
 extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
                           const char *, unsigned int, struct nameidata *);