From: Roger Pau Monne Date: Fri, 23 May 2014 15:57:47 +0000 (+0200) Subject: xen: fix usage of ENODATA X-Git-Tag: qemu-xen-4.5.0-rc1~4 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=fb97531e52d20b864f3eb2e62695d4694a77d530;p=qemu-upstream-4.6-testing.git xen: fix usage of ENODATA ENODATA doesn't exist on FreeBSD, so ENODATA errors returned by the hypervisor are translated to ENOENT. Also, the error code is returned in errno if the call returns -1, so compare the error code with the value in errno instead of the value returned by the function. upstream-commit-id: 74bc41511af5c389cd9f37956bd6e7fd7de35c49 Signed-off-by: Roger Pau Monné Signed-off-by: Stefano Stabellini Cc: xen-devel@lists.xenproject.org Cc: Stefano Stabellini Cc: Anthony Perard --- diff --git a/xen-hvm.c b/xen-hvm.c index a573a204a..5c69a8dc7 100644 --- a/xen-hvm.c +++ b/xen-hvm.c @@ -513,11 +513,14 @@ static void xen_sync_dirty_bitmap(XenIOState *state, start_addr >> TARGET_PAGE_BITS, npages, bitmap); if (rc < 0) { - if (rc != -ENODATA) { +#ifndef ENODATA +#define ENODATA ENOENT +#endif + if (errno == ENODATA) { memory_region_set_dirty(framebuffer, 0, size); DPRINTF("xen: track_dirty_vram failed (0x" TARGET_FMT_plx ", 0x" TARGET_FMT_plx "): %s\n", - start_addr, start_addr + size, strerror(-rc)); + start_addr, start_addr + size, strerror(errno)); } return; }