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

Re: [Xen-devel] [PATCH v2 2/2] x86/xpti: don't map stack guard pages



On 02/03/18 15:35, Jan Beulich wrote:
> Other than for the main mappings, don't even do this in release builds,
> as there are no huge page shattering concerns here.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> ---
> v2: New.
> 
> --- a/xen/arch/x86/smpboot.c
> +++ b/xen/arch/x86/smpboot.c
> @@ -799,7 +799,8 @@ static int setup_cpu_root_pgt(unsigned i
>  
>      /* Install direct map page table entries for stack, IDT, and TSS. */
>      for ( off = rc = 0; !rc && off < STACK_SIZE; off += PAGE_SIZE )
> -        rc = clone_mapping(__va(__pa(stack_base[cpu])) + off, rpt);
> +        if ( !memguard_is_stack_guard_page(off) )
> +            rc = clone_mapping(__va(__pa(stack_base[cpu])) + off, rpt);
>  
>      if ( !rc )
>          rc = clone_mapping(idt_tables[cpu], rpt);
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -5576,6 +5576,14 @@ void memguard_unguard_stack(void *p)
>                             STACK_SIZE - PRIMARY_STACK_SIZE - IST_MAX * 
> PAGE_SIZE);
>  }
>  
> +bool memguard_is_stack_guard_page(unsigned long addr)
> +{
> +    addr &= STACK_SIZE - 1;
> +
> +    return addr >= IST_MAX * PAGE_SIZE &&
> +           addr < STACK_SIZE - PRIMARY_STACK_SIZE;
> +}
> +

What about making use of memguard_is_stack_guard_page() in
memguard_[un]guard_stack() ? This would at once ensure the other unused
pages won't be accessed accidentally somewhere.


Juergen

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

 


Rackspace

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