[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH] plat/common: Zero out extregs area when creating new thread



Hi,

looks good to me.

Reviewed-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>

Cheers, Yuri.


Florian Schmidt <florian.schmidt@xxxxxxxxx> writes:

> Instructions such as xsave and xsaveopt, which are designed to save the
> extended registers on recent x86 CPUs do not guarantee that they touch
> the complete xsave header area, but rather only the bits that the need
> to set. This can lead to invalid xsave header areas if the area is not
> zeroed out before use, which in turn leads to GP traps on xrstor.
> Note that simply zeroing out the area is not enough, because an all-zero
> xsave legacy region is also invalid.
>
> Thanks to Radu Nicolau for reporting this bug.
>
> Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
> ---
>  plat/common/sw_ctx.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/plat/common/sw_ctx.c b/plat/common/sw_ctx.c
> index c69f5fde..06795244 100644
> --- a/plat/common/sw_ctx.c
> +++ b/plat/common/sw_ctx.c
> @@ -34,6 +34,7 @@
>  
>  #include <stdint.h>
>  #include <stdlib.h>
> +#include <string.h>
>  #include <uk/plat/thread.h>
>  #include <uk/alloc.h>
>  #include <sw_ctx.h>
> @@ -70,7 +71,8 @@ static void *sw_ctx_create(struct uk_alloc *allocator, 
> unsigned long sp)
>       ctx->ip = (unsigned long) asm_thread_starter;
>       ctx->extregs = ALIGN_UP(((uintptr_t)ctx + sizeof(struct sw_ctx)),
>                               x86_cpu_features.extregs_align);
> -     // Initialize the extregs area by saving a valid register layout to it
> +     // Initialize extregs area: zero out, then save a valid layout to it.
> +     memset((void *)ctx->extregs, 0, x86_cpu_features.extregs_size);
>       save_extregs(ctx);
>  
>       return ctx;
> -- 
> 2.21.0
>

-- 
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurfürsten-Anlage 36
D-69115 Heidelberg

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.