From: Razvan Cojocaru Date: Thu, 3 Mar 2016 13:58:00 +0000 (+0200) Subject: libxc: Have xc_translate_foreign_address() set errno properly X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1544 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=80c4b4c1785aab8053a27931c188c4311189d32d;p=xen.git libxc: Have xc_translate_foreign_address() set errno properly Currently it's possible for xc_translate_foreign_address() to fail and errno still be set to success. This patch fixes the issue. Based on the first half of Don Slutz' patch: http://lists.xen.org/archives/html/xen-devel/2014-03/msg03720.html Signed-off-by: Razvan Cojocaru Acked-by: Wei Liu --- diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c index ec978904da..92eebd6882 100644 --- a/tools/libxc/xc_pagetab.c +++ b/tools/libxc/xc_pagetab.c @@ -88,8 +88,10 @@ unsigned long xc_translate_foreign_address(xc_interface *xch, uint32_t dom, return 0; memcpy(&pte, map + (paddr & (PAGE_SIZE - 1)), size); munmap(map, PAGE_SIZE); - if (!(pte & 1)) + if (!(pte & 1)) { + errno = EADDRNOTAVAIL; return 0; + } paddr = pte & 0x000ffffffffff000ull; if (level == 2 && (pte & PTE_PSE)) { mask = ((mask ^ ~-mask) >> 1); /* All bits below first set bit */