diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2010-10-27 12:24:28 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2010-10-27 12:24:28 +0100 |
commit | 31e4f2432e508c3ee007fed69aad6b867e6a2fed (patch) | |
tree | 7f84f4b6886d6120dc9e0aedf50778b3f9d6d083 /tools/libxc/xc_private.c | |
parent | 47c1755f36d5b57f5e9e5ba9a3d0ab7331272dee (diff) | |
download | xen-31e4f2432e508c3ee007fed69aad6b867e6a2fed.tar.gz xen-31e4f2432e508c3ee007fed69aad6b867e6a2fed.tar.bz2 xen-31e4f2432e508c3ee007fed69aad6b867e6a2fed.zip |
libxc: fix xc_version by handling all known command types.
xend was crashing since 22289:ca4a781c8ae8 due to missing handling of
XENVER_commandline.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxc/xc_private.c')
-rw-r--r-- | tools/libxc/xc_private.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c index 9e0d3ce2db..1c7a5268e8 100644 --- a/tools/libxc/xc_private.c +++ b/tools/libxc/xc_private.c @@ -447,11 +447,14 @@ int xc_sysctl(xc_interface *xch, struct xen_sysctl *sysctl) int xc_version(xc_interface *xch, int cmd, void *arg) { DECLARE_HYPERCALL_BOUNCE(arg, 0, XC_HYPERCALL_BUFFER_BOUNCE_OUT); /* Size unknown until cmd decoded */ - size_t sz = 0; + size_t sz; int rc; switch ( cmd ) { + case XENVER_version: + sz = 0; + break; case XENVER_extraversion: sz = sizeof(xen_extraversion_t); break; @@ -467,6 +470,21 @@ int xc_version(xc_interface *xch, int cmd, void *arg) case XENVER_platform_parameters: sz = sizeof(xen_platform_parameters_t); break; + case XENVER_get_features: + sz = sizeof(xen_feature_info_t); + break; + case XENVER_pagesize: + sz = 0; + break; + case XENVER_guest_handle: + sz = sizeof(xen_domain_handle_t); + break; + case XENVER_commandline: + sz = sizeof(xen_commandline_t); + break; + default: + ERROR("xc_version: unknown command %d\n", cmd); + return -EINVAL; } HYPERCALL_BOUNCE_SET_SIZE(arg, sz); |