]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
libxc: check in xc_get_tot_pages() that the proper domain is reported
authorVitaly Kuznetsov <vkuznets@redhat.com>
Tue, 2 Dec 2014 15:18:08 +0000 (16:18 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 4 Dec 2014 12:08:19 +0000 (12:08 +0000)
XEN_DOMCTL_getdomaininfo, which is being used by xc_domain_getinfo(), has
strange interface: it reports first domain which has domid >= requested domid
so all callers are supposed to check that the proper domain(s) was queried
by checking domid. xc_get_tot_pages() doesn't do that. In case the requested
domain was destroyed it will report first domain with domid > requested domid
which is apparently misleading as there is no way xc_get_tot_pages() callers
can figure out that they got tot_pages for some other domain.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Don Slutz <dslutz@verizon.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/libxc/xc_private.c

index 1c214ddc8f22feba458fd7e54211bbdb711cb700..e2441ad7ecd127894c8db7290ad7686a4e9996d9 100644 (file)
@@ -613,8 +613,10 @@ int xc_get_pfn_list(xc_interface *xch,
 long xc_get_tot_pages(xc_interface *xch, uint32_t domid)
 {
     xc_dominfo_t info;
-    return (xc_domain_getinfo(xch, domid, 1, &info) != 1) ?
-        -1 : info.nr_pages;
+    if ( (xc_domain_getinfo(xch, domid, 1, &info) != 1) ||
+         (info.domid != domid) )
+        return -1;
+    return info.nr_pages;
 }
 
 int xc_copy_to_domain_page(xc_interface *xch,