aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-08-13 09:44:07 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-08-13 09:44:07 +0100
commitc730da041b1e73dc3e430e37a4e19ac446e74fd2 (patch)
tree22566461b106ade18539ba06e427a798dc0946e9
parent3321c3c8e9489348f03aba13bc45eb155c90995e (diff)
downloadxen-c730da041b1e73dc3e430e37a4e19ac446e74fd2.tar.gz
xen-c730da041b1e73dc3e430e37a4e19ac446e74fd2.tar.bz2
xen-c730da041b1e73dc3e430e37a4e19ac446e74fd2.zip
[HVM] HVMOP_get_param return parameter value within the provided parameter struct,
not as a direct return value. Signed-off-by: Keir Fraser <keir@xensource.com>
-rw-r--r--xen/arch/x86/hvm/hvm.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 2b1f7c887a..eb868ab738 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -568,7 +568,7 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg)
else if ( IS_PRIV(current->domain) )
{
d = find_domain_by_id(a.domid);
- if ( !d )
+ if ( d == NULL )
return -ESRCH;
}
else
@@ -578,22 +578,24 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg)
if ( op == HVMOP_set_param )
{
- rc = 0;
d->arch.hvm_domain.params[a.index] = a.value;
+ rc = 0;
}
else
{
- rc = d->arch.hvm_domain.params[a.index];
+ a.value = d->arch.hvm_domain.params[a.index];
+ rc = copy_to_guest(arg, &a, 1) ? -EFAULT : 0;
}
put_domain(d);
- return rc;
+ break;
}
default:
{
DPRINTK("Bad HVM op %ld.\n", op);
rc = -ENOSYS;
+ break;
}
}