[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] xen: Log errno rather than return value
From: |
Paul Durrant |
Subject: |
Re: [Qemu-devel] [PATCH] xen: Log errno rather than return value |
Date: |
Thu, 12 Oct 2017 09:46:46 +0000 |
> -----Original Message-----
> From: Qemu-devel [mailto:qemu-devel-
> address@hidden On Behalf Of Ross Lagerwall
> Sent: 11 October 2017 16:52
> To: address@hidden
> Cc: Anthony Perard <address@hidden>; Ross Lagerwall
> <address@hidden>; Stefano Stabellini <address@hidden>
> Subject: [Qemu-devel] [PATCH] xen: Log errno rather than return value
>
> xen_modified_memory() sets errno to communicate what went wrong so
> log
> this rather than the return value which is not interesting.
>
> Signed-off-by: Ross Lagerwall <address@hidden>
> ---
> hw/i386/xen/xen-hvm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index d9ccd5d..8028bed 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -1446,7 +1446,7 @@ void xen_hvm_modified_memory(ram_addr_t
> start, ram_addr_t length)
> if (rc) {
> fprintf(stderr,
> "%s failed for "RAM_ADDR_FMT" ("RAM_ADDR_FMT"): %i,
> %s\n",
> - __func__, start, nb_pages, rc, strerror(-rc));
> + __func__, start, nb_pages, errno, strerror(errno));
I think this is actually a deeper problem. If QEMU is using compat code, which
one way or another will go via xencall, then xen_modified_memory() will return
a hypercall errno. However, if it goes via libxendevicemodel and an up-to-date
privcmd, then it will return -1 and errno will be set. Thus I think the correct
fix is not this patch, but a fix in xen_modified_memory() to return -errno and
a fix in libxendevicemodel and the compat code in libxencntrl to behave
consistently. It's all rather horrible.
Paul
> }
> }
> }
> --
> 2.9.5
>