From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Tue, 11 Jun 2019 18:38:33 +0100 From: "Dr. David Alan Gilbert" Message-ID: <20190611173833.GH2777@work-vm> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Virtio-fs] [PATCH] virtiofsd: fix incorrect error handling in lo_do_lookup List-Id: Development discussions about virtio-fs List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Ren Cc: virtio-fs@redhat.com * Eric Ren (renzhen@linux.alibaba.com) wrote: > Signed-off-by: Eric Ren > --- > contrib/virtiofsd/passthrough_ll.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/contrib/virtiofsd/passthrough_ll.c b/contrib/virtiofsd/passthrough_ll.c > index 574e209d95..78716c8aca 100644 > --- a/contrib/virtiofsd/passthrough_ll.c > +++ b/contrib/virtiofsd/passthrough_ll.c > @@ -670,7 +670,6 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, > close(newfd); > newfd = -1; > } else { > - saverr = ENOMEM; > inode = calloc(1, sizeof(struct lo_inode)); > if (!inode) > goto out_err; Can you explain why you remove that? How does it get a sensible errno in this case? > @@ -691,7 +690,9 @@ static int lo_do_lookup(fuse_req_t req, fuse_ino_t parent, const char *name, > res = fstatat(inode->fd, "", &e->attr, > AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW); > if (res == -1) { > + saverr = errno; > unref_inode(lo, inode, 1); > + errno = saverr; That one I agree with. Dave > goto out_err; > } > > -- > 2.17.2 (Apple Git-113) > > _______________________________________________ > Virtio-fs mailing list > Virtio-fs@redhat.com > https://www.redhat.com/mailman/listinfo/virtio-fs -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK