Loading fs/namei.c +1 −7 Original line number Diff line number Diff line Loading @@ -2299,13 +2299,7 @@ int user_path_at_empty(int dfd, const char __user *name, unsigned flags, return filename_lookup(dfd, getname_flags(name, flags, empty), flags, path, NULL); } int user_path_at(int dfd, const char __user *name, unsigned flags, struct path *path) { return user_path_at_empty(dfd, name, flags, path, NULL); } EXPORT_SYMBOL(user_path_at); EXPORT_SYMBOL(user_path_at_empty); /* * NB: most callers don't do anything directly with the reference to the Loading include/linux/namei.h +24 −10 Original line number Diff line number Diff line #ifndef _LINUX_NAMEI_H #define _LINUX_NAMEI_H #include <linux/dcache.h> #include <linux/errno.h> #include <linux/linkage.h> #include <linux/kernel.h> #include <linux/path.h> struct vfsmount; #include <linux/fcntl.h> #include <linux/errno.h> enum { MAX_NESTED_LINKS = 8 }; Loading Loading @@ -46,13 +44,29 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; #define LOOKUP_ROOT 0x2000 #define LOOKUP_EMPTY 0x4000 extern int user_path_at(int, const char __user *, unsigned, struct path *); extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty); #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path) #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path) #define user_path_dir(name, path) \ user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path) static inline int user_path_at(int dfd, const char __user *name, unsigned flags, struct path *path) { return user_path_at_empty(dfd, name, flags, path, NULL); } static inline int user_path(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW, path, NULL); } static inline int user_lpath(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, 0, path, NULL); } static inline int user_path_dir(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path, NULL); } extern int kern_path(const char *, unsigned, struct path *); Loading Loading
fs/namei.c +1 −7 Original line number Diff line number Diff line Loading @@ -2299,13 +2299,7 @@ int user_path_at_empty(int dfd, const char __user *name, unsigned flags, return filename_lookup(dfd, getname_flags(name, flags, empty), flags, path, NULL); } int user_path_at(int dfd, const char __user *name, unsigned flags, struct path *path) { return user_path_at_empty(dfd, name, flags, path, NULL); } EXPORT_SYMBOL(user_path_at); EXPORT_SYMBOL(user_path_at_empty); /* * NB: most callers don't do anything directly with the reference to the Loading
include/linux/namei.h +24 −10 Original line number Diff line number Diff line #ifndef _LINUX_NAMEI_H #define _LINUX_NAMEI_H #include <linux/dcache.h> #include <linux/errno.h> #include <linux/linkage.h> #include <linux/kernel.h> #include <linux/path.h> struct vfsmount; #include <linux/fcntl.h> #include <linux/errno.h> enum { MAX_NESTED_LINKS = 8 }; Loading Loading @@ -46,13 +44,29 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; #define LOOKUP_ROOT 0x2000 #define LOOKUP_EMPTY 0x4000 extern int user_path_at(int, const char __user *, unsigned, struct path *); extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty); #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path) #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path) #define user_path_dir(name, path) \ user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path) static inline int user_path_at(int dfd, const char __user *name, unsigned flags, struct path *path) { return user_path_at_empty(dfd, name, flags, path, NULL); } static inline int user_path(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW, path, NULL); } static inline int user_lpath(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, 0, path, NULL); } static inline int user_path_dir(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path, NULL); } extern int kern_path(const char *, unsigned, struct path *); Loading