Re: [PATCH v9 1/5] fs: split off do_user_path_at_empty from user_path_at_empty()

Christian Brauner
2021-12-29T14:31:36Z

On Tue, Dec 28, 2021 at 10:41:41AM -0800, Stefan Roesch wrote:
> 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>
> Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
> ---
> fs/namei.c | 10 ++++++++--
> include/linux/namei.h | 2 ++
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/fs/namei.c b/fs/namei.c
> index 1f9d2187c765..d988e241b32c 100644
> --- a/fs/namei.c
> +++ b/fs/namei.c
> @@ -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;
> }
> diff --git a/include/linux/namei.h b/include/linux/namei.h
> index e89329bb3134..8f3ef38c057b 100644
> --- a/include/linux/namei.h
> +++ b/include/linux/namei.h
> @@ -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);

Sorry, just seeing this now but this wants to live in internal.h not in
namei.h similar to all the other io_uring specific exports we added over
the last releases. There's no need to make this a kernel-wide thing if
we can avoid it, imho. With that changed:
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>