[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/tboot: Drop mfn_in_guarded_stack()
commit db92cb450dd7ad5eb103819d26b737cdc054ce4a Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Jul 26 12:53:20 2022 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Dec 8 17:30:23 2022 +0000 x86/tboot: Drop mfn_in_guarded_stack() To support CET Shadow Stacks, guard pages changed unilaterally from being holes to being read-only (i.e. they're never holes any more). Furthermore, being real shadow stacks in some cases, the frames explicitly should be included in the integrity check. Fixes: 60016604739b ("x86/shstk: Rework the stack layout to support shadow stacks") Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/tboot.c | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c index fe1abfdf08..03098450f7 100644 --- a/xen/arch/x86/tboot.c +++ b/xen/arch/x86/tboot.c @@ -242,29 +242,6 @@ static void tboot_gen_domain_integrity(const uint8_t key[TB_KEY_SIZE], memset(&ctx, 0, sizeof(ctx)); } -/* - * For stack overflow detection in debug build, a guard page is set up. - * This fn is used to detect whether a page is in the guarded pages for - * the above reason. - */ -static int mfn_in_guarded_stack(unsigned long mfn) -{ - void *p; - int i; - - for ( i = 0; i < nr_cpu_ids; i++ ) - { - if ( !stack_base[i] ) - continue; - p = (void *)((unsigned long)stack_base[i] + STACK_SIZE - - PRIMARY_STACK_SIZE - PAGE_SIZE); - if ( mfn == virt_to_mfn(p) ) - return -1; - } - - return 0; -} - static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE], vmac_t *mac) { @@ -288,15 +265,7 @@ static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE], continue; /* skip tboot and its page tables */ if ( is_page_in_use(page) && is_special_page(page) ) - { - void *pg; - - if ( mfn_in_guarded_stack(mfn) ) - continue; /* skip guard stack, see memguard_guard_stack() in mm.c */ - - pg = mfn_to_virt(mfn); - vmac_update((uint8_t *)pg, PAGE_SIZE, &ctx); - } + vmac_update(mfn_to_virt(mfn), PAGE_SIZE, &ctx); } *mac = vmac(NULL, 0, nonce, NULL, &ctx); -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |