[edk2-devel] [PATCH] UefiCpuPkg: Fix CPU stack guard support by aligning GDT buffer
Leif Lindholm
leif at nuviainc.com
Fri Nov 5 19:28:21 UTC 2021
UefiCpuPkg maintainers - please respond.
Meanwhile, Vitaly, could you please provide a commit message?
The BZ link is needed, but it's not a substitute.
/
Leif
On Mon, Sep 20, 2021 at 17:13:47 +0300, Vitaly Cheptsov wrote:
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3639
>
>
>
> Cc: Jiewen Yao <jiewen.yao at intel.com>
>
> Cc: Eric Dong <eric.dong at intel.com>
>
> Cc: Michael Kinney <michael.d.kinney at intel.com>
>
> Cc: Jian J Wang <jian.j.wang at intel.com>
>
> Cc: Jeff Fan <vanjeff_919 at hotmail.com>
>
> Cc: Mikhail Krichanov <krichanov at ispras.ru>
>
> Cc: Marvin Häuser <mhaeuser at posteo.de>
>
> Signed-off-by: Vitaly Cheptsov <cheptsov at ispras.ru>
>
> ---
>
> .../Library/CpuExceptionHandlerLib/DxeException.c | 12 +++++++-----
>
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
>
>
> diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c
>
> index fd59f09ecd..12874811e1 100644
>
> --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c
>
> +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c
>
> @@ -22,7 +22,7 @@ EXCEPTION_HANDLER_DATA mExceptionHandlerData;
>
>
>
> UINT8 mNewStack[CPU_STACK_SWITCH_EXCEPTION_NUMBER *
>
> CPU_KNOWN_GOOD_STACK_SIZE];
>
> -UINT8 mNewGdt[CPU_TSS_GDT_SIZE];
>
> +UINT8 mNewGdt[CPU_TSS_GDT_SIZE + IA32_GDT_ALIGNMENT];
>
>
>
> /**
>
> Common exception handler.
>
> @@ -238,6 +238,7 @@ InitializeCpuExceptionHandlersEx (
>
> CPU_EXCEPTION_INIT_DATA EssData;
>
> IA32_DESCRIPTOR Idtr;
>
> IA32_DESCRIPTOR Gdtr;
>
> + UINT8 *Gdt;
>
>
>
> //
>
> // To avoid repeat initialization of default handlers, the caller should pass
>
> @@ -259,6 +260,7 @@ InitializeCpuExceptionHandlersEx (
>
> if (PcdGetBool (PcdCpuStackGuard)) {
>
> if (InitData == NULL) {
>
> SetMem (mNewGdt, sizeof (mNewGdt), 0);
>
> + Gdt = ALIGN_POINTER (mNewGdt, IA32_GDT_ALIGNMENT);
>
>
>
> AsmReadIdtr (&Idtr);
>
> AsmReadGdtr (&Gdtr);
>
> @@ -270,11 +272,11 @@ InitializeCpuExceptionHandlersEx (
>
> EssData.X64.StackSwitchExceptionNumber = CPU_STACK_SWITCH_EXCEPTION_NUMBER;
>
> EssData.X64.IdtTable = (VOID *)Idtr.Base;
>
> EssData.X64.IdtTableSize = Idtr.Limit + 1;
>
> - EssData.X64.GdtTable = mNewGdt;
>
> - EssData.X64.GdtTableSize = sizeof (mNewGdt);
>
> - EssData.X64.ExceptionTssDesc = mNewGdt + Gdtr.Limit + 1;
>
> + EssData.X64.GdtTable = Gdt;
>
> + EssData.X64.GdtTableSize = CPU_TSS_GDT_SIZE;
>
> + EssData.X64.ExceptionTssDesc = Gdt + Gdtr.Limit + 1;
>
> EssData.X64.ExceptionTssDescSize = CPU_TSS_DESC_SIZE;
>
> - EssData.X64.ExceptionTss = mNewGdt + Gdtr.Limit + 1 + CPU_TSS_DESC_SIZE;
>
> + EssData.X64.ExceptionTss = Gdt + Gdtr.Limit + 1 + CPU_TSS_DESC_SIZE;
>
> EssData.X64.ExceptionTssSize = CPU_TSS_SIZE;
>
>
>
> InitData = &EssData;
>
> --
>
> 2.30.1 (Apple Git-130)
>
>
>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#83405): https://edk2.groups.io/g/devel/message/83405
Mute This Topic: https://groups.io/mt/85741694/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list