[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 070/104] virtiofsd: fail when parent inode isn't known in lo_
From: |
Misono Tomohiro |
Subject: |
Re: [PATCH 070/104] virtiofsd: fail when parent inode isn't known in lo_do_lookup() |
Date: |
Thu, 16 Jan 2020 16:17:29 +0900 |
Looks good to me.
Reviewed-by: Misono Tomohiro <address@hidden>
> ---
> tools/virtiofsd/passthrough_ll.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c
> b/tools/virtiofsd/passthrough_ll.c
> index 1618db5a92..ef8b88e3d1 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -778,6 +778,15 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t
> parent, const char *name,
> struct lo_data *lo = lo_data(req);
> struct lo_inode *inode, *dir = lo_inode(req, parent);
>
> + /*
> + * name_to_handle_at() and open_by_handle_at() can reach here with fuse
> + * mount point in guest, but we don't have its inode info in the
> + * ino_map.
> + */
> + if (!dir) {
> + return ENOENT;
> + }
> +
> memset(e, 0, sizeof(*e));
> e->attr_timeout = lo->timeout;
> e->entry_timeout = lo->timeout;
> @@ -787,7 +796,7 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t
> parent, const char *name,
> name = ".";
> }
>
> - newfd = openat(lo_fd(req, parent), name, O_PATH | O_NOFOLLOW);
> + newfd = openat(dir->fd, name, O_PATH | O_NOFOLLOW);
> if (newfd == -1) {
> goto out_err;
> }
> @@ -797,7 +806,7 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t
> parent, const char *name,
> goto out_err;
> }
>
> - inode = lo_find(lo_data(req), &e->attr);
> + inode = lo_find(lo, &e->attr);
> if (inode) {
> close(newfd);
> newfd = -1;
> @@ -813,6 +822,7 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t
> parent, const char *name,
> inode->is_symlink = S_ISLNK(e->attr.st_mode);
> inode->refcount = 1;
> inode->fd = newfd;
> + newfd = -1;
> inode->ino = e->attr.st_ino;
> inode->dev = e->attr.st_dev;
- Re: [PATCH 070/104] virtiofsd: fail when parent inode isn't known in lo_do_lookup(),
Misono Tomohiro <=