aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_private.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-01-13 08:14:01 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-01-13 08:14:01 +0000
commitb3eb2c1e8b4cf199aa4bf8188685c3059c420a60 (patch)
treed8eb7d4c8ba276a0f422af101f52ac54aa240781 /tools/libxc/xc_private.c
parent9fececad98aa1259a9896edf7e7931822e3eef87 (diff)
downloadxen-b3eb2c1e8b4cf199aa4bf8188685c3059c420a60.tar.gz
xen-b3eb2c1e8b4cf199aa4bf8188685c3059c420a60.tar.bz2
xen-b3eb2c1e8b4cf199aa4bf8188685c3059c420a60.zip
x86: add and use XEN_DOMCTL_getpageframeinfo3
To support wider than 28-bit MFNs, add XEN_DOMCTL_getpageframeinfo3 (with the type replacing the passed in MFN rather than getting or-ed into it) to properly back xc_get_pfn_type_batch(). With xc_get_pfn_type_batch() only used internally to libxc, move its prototype from xenctrl.h to xc_private.h. This also fixes a couple of bugs in pre-existing code: - the failure path for init_mem_info() leaked minfo->pfn_type, - one error path of the XEN_DOMCTL_getpageframeinfo2 handler used put_domain() where rcu_unlock_domain() was meant, and - the XEN_DOMCTL_getpageframeinfo2 handler could call xsm_getpageframeinfo() with an invalid struct page_info pointer. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'tools/libxc/xc_private.c')
-rw-r--r--tools/libxc/xc_private.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c
index 99589beaf8..7bde4bbe04 100644
--- a/tools/libxc/xc_private.c
+++ b/tools/libxc/xc_private.c
@@ -149,14 +149,14 @@ void unlock_pages(void *addr, size_t len)
}
/* NB: arr must be locked */
-int xc_get_pfn_type_batch(int xc_handle,
- uint32_t dom, int num, uint32_t *arr)
+int xc_get_pfn_type_batch(int xc_handle, uint32_t dom,
+ unsigned int num, xen_pfn_t *arr)
{
DECLARE_DOMCTL;
- domctl.cmd = XEN_DOMCTL_getpageframeinfo2;
+ domctl.cmd = XEN_DOMCTL_getpageframeinfo3;
domctl.domain = (domid_t)dom;
- domctl.u.getpageframeinfo2.num = num;
- set_xen_guest_handle(domctl.u.getpageframeinfo2.array, arr);
+ domctl.u.getpageframeinfo3.num = num;
+ set_xen_guest_handle(domctl.u.getpageframeinfo3.array, arr);
return do_domctl(xc_handle, &domctl);
}