|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: fix hypercall continuation cancellation in XENMAPSPACE_gmfn_range compat wrapper
On 28/11/2012 07:43, "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
> When no continuation was established, there must also not be an attempt
> to cancel it - hypercall_cancel_continuation(), in the non-HVM, non-
> multicall case, adjusts the guest mode return address in a way assuming
> that an earlier call hypercall_create_continuation() took place.
>
> Once touching this code, also restructure it slightly to improve
> readability and switch to using the more relaxed copy function (copying
> from the same guest memory already validated the virtual address
> range).
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Keir Fraser <keir@xxxxxxx>
> --- a/xen/arch/x86/x86_64/compat/mm.c
> +++ b/xen/arch/x86/x86_64/compat/mm.c
> @@ -66,21 +66,20 @@ int compat_arch_memory_op(int op, XEN_GU
> XLAT_add_to_physmap(nat, &cmp);
> rc = arch_memory_op(op, guest_handle_from_ptr(nat, void));
>
> - if ( cmp.space == XENMAPSPACE_gmfn_range )
> + if ( !rc || cmp.space != XENMAPSPACE_gmfn_range )
> + break;
> +
> + XLAT_add_to_physmap(&cmp, nat);
> + if ( __copy_to_guest(arg, &cmp, 1) )
> {
> - if ( rc )
> - {
> - XLAT_add_to_physmap(&cmp, nat);
> - if ( copy_to_guest(arg, &cmp, 1) )
> - {
> - hypercall_cancel_continuation();
> - return -EFAULT;
> - }
> - }
> if ( rc == __HYPERVISOR_memory_op )
> - hypercall_xlat_continuation(NULL, 0x2, nat, arg);
> + hypercall_cancel_continuation();
> + return -EFAULT;
> }
>
> + if ( rc == __HYPERVISOR_memory_op )
> + hypercall_xlat_continuation(NULL, 0x2, nat, arg);
> +
> break;
> }
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |