@@ -2794,12 +2794,18 @@ int path_pts(struct path *path)
}
#endif
+int do_user_path_at_empty(int dfd, struct filename *filename, unsigned int flags,
+ struct path *path)
+{
+ return filename_lookup(dfd, filename, flags, path, NULL);
+}
+
int user_path_at_empty(int dfd, const char __user *name, unsigned flags,
- struct path *path, int *empty)
+ struct path *path, int *empty)
{
struct filename *filename = getname_flags(name, flags, empty);
- int ret = filename_lookup(dfd, filename, flags, path, NULL);
+ int ret = do_user_path_at_empty(dfd, filename, flags, path);
putname(filename);
return ret;
}
@@ -49,6 +49,8 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT};
extern int path_pts(struct path *path);
+extern int do_user_path_at_empty(int dfd, struct filename *filename,
+ unsigned int flags, struct path *path);
extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);
static inline int user_path_at(int dfd, const char __user *name, unsigned flags,
This splits off a do_user_path_at_empty function from the user_path_at_empty_function. This is required so it can be called from io_uring. Signed-off-by: Stefan Roesch <shr@fb.com> --- fs/namei.c | 10 ++++++++-- include/linux/namei.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-)