[Virtio-fs] [PATCH] virtiofsd: fix incorrect error handling in lo_do_lookup

Dr. David Alan Gilbert dgilbert at redhat.com
Tue Jun 11 17:38:33 UTC 2019


* Eric Ren (renzhen at linux.alibaba.com) wrote:
> Signed-off-by: Eric Ren <renzhen at linux.alibaba.com>
> ---
>  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 at redhat.com
> https://www.redhat.com/mailman/listinfo/virtio-fs
--
Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK




More information about the Virtio-fs mailing list