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

Re: [PATCH 07/16] x86/shstk: Re-layout the stack block for shadow stacks



On 02.05.2020 00:58, Andrew Cooper wrote:
> --- a/xen/arch/x86/cpu/common.c
> +++ b/xen/arch/x86/cpu/common.c
> @@ -732,14 +732,14 @@ void load_system_tables(void)
>               .rsp2 = 0x8600111111111111ul,
>  
>               /*
> -              * MCE, NMI and Double Fault handlers get their own stacks.
> +              * #DB, NMI, DF and #MCE handlers get their own stacks.

Then also #DF and #MC?

> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -6002,25 +6002,18 @@ void memguard_unguard_range(void *p, unsigned long l)
>  
>  void memguard_guard_stack(void *p)
>  {
> -    /* IST_MAX IST pages + at least 1 guard page + primary stack. */
> -    BUILD_BUG_ON((IST_MAX + 1) * PAGE_SIZE + PRIMARY_STACK_SIZE > 
> STACK_SIZE);
> +    map_pages_to_xen((unsigned long)p, virt_to_mfn(p), 1, _PAGE_NONE);
>  
> -    memguard_guard_range(p + IST_MAX * PAGE_SIZE,
> -                         STACK_SIZE - PRIMARY_STACK_SIZE - IST_MAX * 
> PAGE_SIZE);
> +    p += 5 * PAGE_SIZE;

The literal 5 here and ...

> +    map_pages_to_xen((unsigned long)p, virt_to_mfn(p), 1, _PAGE_NONE);
>  }
>  
>  void memguard_unguard_stack(void *p)
>  {
> -    memguard_unguard_range(p + IST_MAX * PAGE_SIZE,
> -                           STACK_SIZE - PRIMARY_STACK_SIZE - IST_MAX * 
> PAGE_SIZE);
> -}
> -
> -bool memguard_is_stack_guard_page(unsigned long addr)
> -{
> -    addr &= STACK_SIZE - 1;
> +    map_pages_to_xen((unsigned long)p, virt_to_mfn(p), 1, 
> PAGE_HYPERVISOR_RW);
>  
> -    return addr >= IST_MAX * PAGE_SIZE &&
> -           addr < STACK_SIZE - PRIMARY_STACK_SIZE;
> +    p += 5 * PAGE_SIZE;

... here could do with macro-izing: IST_MAX + 1 would already be
a little better, I guess.

Preferably with adjustments along these lines
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Jan



 


Rackspace

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