|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/3] xen/x86: ensure copying to L1 guest in update_secondary_system_time()
>>> On 23.02.17 at 10:41, <haozhong.zhang@xxxxxxxxx> wrote:
> @@ -992,10 +993,30 @@ bool_t update_secondary_system_time(struct vcpu *v,
> {
> XEN_GUEST_HANDLE(vcpu_time_info_t) user_u = v->arch.time_info_guest;
> smap_check_policy_t saved_policy;
> + bool nested_guest_mode = false;
>
> if ( guest_handle_is_null(user_u) )
> return 1;
>
> + /*
> + * Must be before all following __copy_field_to_guest() and
> + * __copy_to_guest().
> + *
> + * Otherwise, if 'v' is in the nested guest mode, paging_gva_to_gfn()
> called
> + * from __copy_field_to_guest() and __copy_to_guest() will treat the
> target
> + * address as L2 gva, and __copy_field_to_guest() and __copy_to_guest()
> will
> + * consequently copy runstate to L2 guest rather than L1 guest.
> + *
> + * Therefore, we clear the nested guest flag before
> __copy_field_to_guest()
> + * and __copy_to_guest(), and restore the flag after all guest copy.
> + */
> + if ( nestedhvm_enabled(v->domain) )
> + {
> + nested_guest_mode = nestedhvm_is_n2(v);
> + if ( nested_guest_mode )
> + nestedhvm_vcpu_exit_guestmode(v);
> + }
> +
> saved_policy = smap_policy_change(v, SMAP_CHECK_ENABLED);
>
> /* 1. Update userspace version. */
There is an early exit path right below here. Taking this together with
the code and comment redundancy with patch 1, this is a pretty clear
sign that you want to rename smap_policy_change() and use the new
function, taking care of both issues, in both code paths.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |