From 74bc41511af5c389cd9f37956bd6e7fd7de35c49 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Fri, 23 May 2014 17:57:47 +0200 Subject: [PATCH] xen: fix usage of ENODATA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. Signed-off-by: Roger Pau Monné Signed-off-by: Stefano Stabellini Cc: xen-devel@lists.xenproject.org Cc: Stefano Stabellini Cc: Anthony Perard --- xen-hvm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen-hvm.c b/xen-hvm.c index a2486cfd7e..91de2e230b 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; }