|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: x86: copy back tsc info, not pointer to tsc info in domctl
On 26/05/15 11:04, Ian Campbell wrote:
> In 38b37ed82705 "x86/domctl: cleanup", XEN_DOMCTL_gettscinfo was
> changed to use the standard copyback mechanism.
>
> However the output TSC Info is a guerst handle, i.e. a pointer to the
> location for the information, copyback just copies the unchanged
> pointer back.
>
> Switch back to fetching the details into a local struct and explicitly
> copying it back.
>
> This caused test failures in the Cambridge instance of osstest, but
> not for some reason in the production instance.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Oops - I feel very silly for not noticing that. My testing also didn't
notice this.
> ---
> xen/arch/x86/domctl.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
> index 684259b..e7da735 100644
> --- a/xen/arch/x86/domctl.c
> +++ b/xen/arch/x86/domctl.c
> @@ -703,13 +703,16 @@ long arch_do_domctl(
> ret = -EINVAL;
> else
> {
> + xen_guest_tsc_info_t info = { 0 };
> +
> domain_pause(d);
> - tsc_get_info(d, &domctl->u.tsc_info.info.tsc_mode,
> - &domctl->u.tsc_info.info.elapsed_nsec,
> - &domctl->u.tsc_info.info.gtsc_khz,
> - &domctl->u.tsc_info.info.incarnation);
> + tsc_get_info(d, &info.tsc_mode,
> + &info.elapsed_nsec,
> + &info.gtsc_khz,
> + &info.incarnation);
> + if ( copy_to_guest(domctl->u.tsc_info.out_info, &info, 1) )
> + ret = -EFAULT;
> domain_unpause(d);
The copy_to_guest() can be after the domain_unpause().
Alternatively, being a domctl, we can change tsc_info to not be a guest
handle. There is plenty of space inside the union, and it saves a
further memory access.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |