From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.ispras.ru (mail.ispras.ru [83.149.199.84]) by mx.groups.io with SMTP id smtpd.web12.17559.1635073177393224338 for ; Sun, 24 Oct 2021 03:59:38 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: ispras.ru, ip: 83.149.199.84, mailfrom: cheptsov@ispras.ru) Received: from smtpclient.apple (unknown [77.232.9.83]) by mail.ispras.ru (Postfix) with ESMTPSA id B8FD040A2BB6; Sun, 24 Oct 2021 10:59:32 +0000 (UTC) From: "Vitaly Cheptsov" Message-Id: <499F6CCB-1E51-4564-8157-867453FC3F40@ispras.ru> Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\)) Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg: Fix CPU stack guard support by aligning GDT buffer Date: Sun, 24 Oct 2021 13:59:31 +0300 In-Reply-To: <4886.1632154512621436417@groups.io> Cc: Jiewen Yao , Eric Dong , Michael Kinney , Jian J Wang , Jeff Fan , Mikhail Krichanov , =?utf-8?Q?Marvin_H=C3=A4user?= To: devel@edk2.groups.io References: <20210920141347.25161-1-cheptsov@ispras.ru> <4886.1632154512621436417@groups.io> X-Mailer: Apple Mail (2.3654.120.0.1.13) X-Groupsio-MsgNum: 82608 Content-Type: multipart/signed; boundary="Apple-Mail=_C2ADF513-B4DD-49D4-B891-0906445EFEBC"; protocol="application/pgp-signature"; micalg=pgp-sha256 --Apple-Mail=_C2ADF513-B4DD-49D4-B891-0906445EFEBC Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hello, It has been over a month since the patch was sent. What is the state of = the issue? Best regards, Vitaly > On 20 Sep 2021, at 19:15, vit9696 via [] = wrote: >=20 > Just to make it clear, this is an immediate solution that is good = enough to fix the bug. However, a more proper solution would be to = introduce the _Alignas concept to EDK II. I would suggest the following = macro in Base.h: >=20 > /** > Enforce custom alignment for a variable definition. > Similar to C11 alignas macro from stdalign.h, except it must be = functional to support MSVC. >=20 > @param Alignment Numeric alignment to require. > **/ > #ifdef _MSC_EXTENSIONS > #define ALIGNAS(Alignment) __declspec(align(Alignment)) > #else > #define ALIGNAS(Alignment) _Alignas(Alignment) > #endif >=20 > If there is no disagreement on this, I can imagine submitting an = update after this patch is merged. >=20 >=20 >> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3639 >>=20 >> Cc: Jiewen Yao >> Cc: Eric Dong >> Cc: Michael Kinney >> Cc: Jian J Wang >> Cc: Jeff Fan >> Cc: Mikhail Krichanov >> Cc: Marvin H=C3=A4user >> Signed-off-by: Vitaly Cheptsov >> --- >> .../Library/CpuExceptionHandlerLib/DxeException.c | 12 = +++++++----- >> 1 file changed, 7 insertions(+), 5 deletions(-) >>=20 >> 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; >>=20 >> 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]; >>=20 >> /** >> Common exception handler. >> @@ -238,6 +238,7 @@ InitializeCpuExceptionHandlersEx ( >> CPU_EXCEPTION_INIT_DATA EssData; >> IA32_DESCRIPTOR Idtr; >> IA32_DESCRIPTOR Gdtr; >> + UINT8 *Gdt; >>=20 >> // >> // To avoid repeat initialization of default handlers, the caller = should pass >> @@ -259,6 +260,7 @@ InitializeCpuExceptionHandlersEx ( >> if (PcdGetBool (PcdCpuStackGuard)) { >> if (InitData =3D=3D NULL) { >> SetMem (mNewGdt, sizeof (mNewGdt), 0); >> + Gdt =3D ALIGN_POINTER (mNewGdt, IA32_GDT_ALIGNMENT); >>=20 >> AsmReadIdtr (&Idtr); >> AsmReadGdtr (&Gdtr); >> @@ -270,11 +272,11 @@ InitializeCpuExceptionHandlersEx ( >> EssData.X64.StackSwitchExceptionNumber =3D = CPU_STACK_SWITCH_EXCEPTION_NUMBER; >> EssData.X64.IdtTable =3D (VOID *)Idtr.Base; >> EssData.X64.IdtTableSize =3D Idtr.Limit + 1; >> - EssData.X64.GdtTable =3D mNewGdt; >> - EssData.X64.GdtTableSize =3D sizeof (mNewGdt); >> - EssData.X64.ExceptionTssDesc =3D mNewGdt + Gdtr.Limit + 1; >> + EssData.X64.GdtTable =3D Gdt; >> + EssData.X64.GdtTableSize =3D CPU_TSS_GDT_SIZE; >> + EssData.X64.ExceptionTssDesc =3D Gdt + Gdtr.Limit + 1; >> EssData.X64.ExceptionTssDescSize =3D CPU_TSS_DESC_SIZE; >> - EssData.X64.ExceptionTss =3D mNewGdt + Gdtr.Limit + 1 + = CPU_TSS_DESC_SIZE; >> + EssData.X64.ExceptionTss =3D Gdt + Gdtr.Limit + 1 + = CPU_TSS_DESC_SIZE; >> EssData.X64.ExceptionTssSize =3D CPU_TSS_SIZE; >>=20 >> InitData =3D &EssData; >=20 --Apple-Mail=_C2ADF513-B4DD-49D4-B891-0906445EFEBC Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEsLABAI5Y5VbvBdmpL8K2O86Eyz4FAmF1PJMACgkQL8K2O86E yz74xQ/9GEYmA4Q+wRXIB+xWEghU+ZzBuqa5O0CKyjhxHfb1LWPr/ezoRoGsMf1W wqwtlvumy7hJWN8JW/BEkQoiChQ8reOC0KwJKiMJhmdQayDo5emqstSt6DcX+Vsd blDWZhslEUnGniYmwFYfZyt6AdHLuU77QolHTsJYSG3uosefOaXNC0BTPniZC1G5 QZhEFi3xx75r0oTvBkOK9B7OGc8THZMxo35+oTNIDKIUnz9tov513P4WmywBC36V ecIjhSBWXz5VYF6nGn2yyERQy/Gt8potXQlYdj/IQ9YJL5zjRc3uFdlHkkw+epmc vxufW5SMRD/oCDlSIDtmdCmjvqI89/+eC/hOAuvYwbAEiuXSZjTEHTrZYLz/Soqk chiA2MLQbF0bxX34EvlQPiZ1nDbc0JofTLVirFRlGTAkTItFAgv40m+nMBlgKiI0 6lcYa+9cYsuW+uk/37N04gX9GPsLr2SZo+nOlBkpoLhxaRGG3BJmEbRtrx11rAjw s0uqzmadxrwRaK+ZmkvCjIAyXtFq+NhsJQIIYNm91nQu15DkLxTktj09q7BkEM/I nCCbaB8OwIHfIU/yC5k7W7AOQq4TaMpytZhsgLJfRoJYNHbZP63GCBKzxk49KDkT FtkfrEo7/ajH3i3V87RznMlCoYcZLdn1pwuYCij9Vnkr3WOdewY= =cUR7 -----END PGP SIGNATURE----- --Apple-Mail=_C2ADF513-B4DD-49D4-B891-0906445EFEBC--