From d429d00f97eace52c94af73088f1b61413405bbf Mon Sep 17 00:00:00 2001 From: Jian J Wang Date: Tue, 27 Feb 2018 09:04:23 +0800 Subject: [PATCH] UefiCpuPkg/CpuExceptionHandlerLib: fix incorrect init of exception stack This issue is introduced at following commit, which tried to add stack switch support on behalf of Stack Guard feature. 0ff5aa9cae1ea276668fa4398d047aa9fda3c2c7 The field KnownGoodStackTop in CPU_EXCEPTION_INIT_DATA is initialized to the start address of array mNewStack. This is wrong. It must be the end of mNewStack. This patch fixes this mistake. Cc: Ruiyu Ni Cc: Eric Dong Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang Reviewed-by: Laszlo Ersek --- UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c index 6d1b54d31d..2a090782fc 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c @@ -270,7 +270,7 @@ InitializeCpuExceptionHandlersEx ( AsmReadGdtr (&Gdtr); EssData.X64.Revision = CPU_EXCEPTION_INIT_DATA_REV; - EssData.X64.KnownGoodStackTop = (UINTN)mNewStack; + EssData.X64.KnownGoodStackTop = (UINTN)mNewStack + sizeof (mNewStack); EssData.X64.KnownGoodStackSize = CPU_KNOWN_GOOD_STACK_SIZE; EssData.X64.StackSwitchExceptions = CPU_STACK_SWITCH_EXCEPTION_LIST; EssData.X64.StackSwitchExceptionNumber = CPU_STACK_SWITCH_EXCEPTION_NUMBER;