]> xenbits.xensource.com Git - qemu-upstream-4.5-testing.git/commitdiff
xen: fix usage of ENODATA
authorRoger Pau Monne <roger.pau@citrix.com>
Fri, 23 May 2014 15:57:47 +0000 (17:57 +0200)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Mon, 4 Aug 2014 16:36:12 +0000 (16:36 +0000)
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é <roger.pau@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Anthony Perard <anthony.perard@citrix.com>
xen-hvm.c

index a573a204aa96a96de17a73ba3fe0df494c0195cb..5c69a8dc707ba0924c20cdc94824563a633f0c66 100644 (file)
--- 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;
     }