diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-08-13 09:44:07 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-08-13 09:44:07 +0100 |
commit | c730da041b1e73dc3e430e37a4e19ac446e74fd2 (patch) | |
tree | 22566461b106ade18539ba06e427a798dc0946e9 | |
parent | 3321c3c8e9489348f03aba13bc45eb155c90995e (diff) | |
download | xen-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.c | 10 |
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; } } |