From: Jan Beulich Date: Fri, 25 Nov 2016 13:30:58 +0000 (+0100) Subject: x86: re-add stack alignment check X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~67 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=bffd3752b7c5554a551e86ff9f08e30f484f3537;p=xen.git x86: re-add stack alignment check Commit 279840d5ea ("x86/boot: install trap handlers much earlier on boot"), perhaps not really intentionally, removed this check. Add it back, - preventing it from triggering before any output is set up, - accompanying it with a (weaker, due to its open coding of what get_stack_bottom() does) build time check. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Release-acked-by: Wei Liu --- diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 3475198845..06ee401ff1 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -643,6 +643,11 @@ void load_system_tables(void) .limit = (IDT_ENTRIES * sizeof(idt_entry_t)) - 1, }; + /* Bottom-of-stack must be 16-byte aligned! */ + BUILD_BUG_ON((sizeof(struct cpu_info) - + offsetof(struct cpu_info, guest_cpu_user_regs.es)) & 0xf); + BUG_ON(system_state != SYS_STATE_early_boot && (stack_bottom & 0xf)); + /* Main stack for interrupts/exceptions. */ tss->rsp0 = stack_bottom; tss->bitmap = IOBMP_INVALID_OFFSET;