From nobody Sun Feb 8 18:29:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+92337+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92337+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1660189896; cv=none; d=zohomail.com; s=zohoarc; b=GxIZ6f3zEZaM8ZukUr5T+Svkf+0VhICztmilaq1WW4uTwQ7Ajq+KKeD9Qs851URjkDGs53BLKzJjH88jNVkL2/vTjphmgIQ3x8r6FFhLVJhx55fAlOOZ1EB+3qo6BuVbTNqANOgIjPHlcjZTVcQysqVjLXXDVrTk4W5bpEC/qT8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660189896; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Hmfpz06kMGfBosxu9yYDvHRbzbtbGD6Hkw4l4RmjmiM=; b=APDKjLXFU9g29AD3RqkWJ3Qe08kKhmRCncrZH1Dv7p7s9Ce18y687h91eGxgIX98xAVomf0FjP5Eb4XSuCdujYQR3S2/O3fOr1EsDHvgRPyFPNvIxs419LqeuPqFF/6haa7bwI13UbsPC6M6/WSQwdHm6r/8wmDEgIqzS9AbO+4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92337+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1660189896171787.2030436251428; Wed, 10 Aug 2022 20:51:36 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id GqCXYY1788612xQj4cgddv3M; Wed, 10 Aug 2022 20:51:34 -0700 X-Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web08.2543.1660189889088559202 for ; Wed, 10 Aug 2022 20:51:34 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10435"; a="377541695" X-IronPort-AV: E=Sophos;i="5.93,228,1654585200"; d="scan'208";a="377541695" X-Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2022 20:51:33 -0700 X-IronPort-AV: E=Sophos;i="5.93,228,1654585200"; d="scan'208";a="665190594" X-Received: from duntan-mobl.ccr.corp.intel.com ([10.239.157.47]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2022 20:51:30 -0700 From: "duntan" To: devel@edk2.groups.io Cc: Eric Dong , Rahul Kumar , Ray Ni Subject: [edk2-devel] [Patch V3 1/2] UefiCpuPkg/PiSmmCpuDxeSmm: Add a new mIsShadowStack flag Date: Thu, 11 Aug 2022 11:51:12 +0800 Message-Id: <20220811035113.694-2-dun.tan@intel.com> In-Reply-To: <20220811035113.694-1-dun.tan@intel.com> References: <20220811035113.694-1-dun.tan@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,dun.tan@intel.com X-Gm-Message-State: kPlNuvYfgwVIyYpHzzNgNOu6x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1660189894; bh=TzwtmkUqUTq8zFAWjB/NyLMlNfGcYDcBjHwM/4MiHXU=; h=Cc:Date:From:Reply-To:Subject:To; b=QA5izUwlyltATaCHc2WxFYNYI6qHy62LEojbMqU/YWCnu7xw4AiFYIUHzhqqOGY4rbV 4Erk2QChuUnpbs/3vUCN/0dR7H3wOYza94SUj1C3cLMGqW/3Dks70inbowR139NVlTxOW A69OHN1G+i9JfIcroAYsGjEOlj68ZN46J6M= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1660189897413100003 Content-Type: text/plain; charset="utf-8" This patch is code refactoring and doesn't change any functionality. Add a new mIsShadowStack flag to identify whether current memory is shadow stack. Previous smm code logic regards a RO range as shadow stack and set the dirty bit in corresponding page table entry if mInternalCr3 is not 0, which may be confusing. Signed-off-by: Dun Tan Cc: Eric Dong Cc: Rahul Kumar Cc: Ray Ni --- UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c b/UefiCpuPk= g/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c index 1f7cc15727..10de8dd8e4 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c @@ -32,7 +32,8 @@ PAGE_ATTRIBUTE_TABLE mPageAttributeTable[] =3D { { Page1G, SIZE_1GB, PAGING_1G_ADDRESS_MASK_64 }, }; =20 -UINTN mInternalCr3; +UINTN mInternalCr3; +BOOLEAN mIsShadowStack =3D FALSE; =20 /** Set the internal page table base address. @@ -249,7 +250,7 @@ ConvertPageEntryAttribute ( if ((Attributes & EFI_MEMORY_RO) !=3D 0) { if (IsSet) { NewPageEntry &=3D ~(UINT64)IA32_PG_RW; - if (mInternalCr3 !=3D 0) { + if (mIsShadowStack) { // Environment setup // ReadOnly page need set Dirty bit for shadow stack NewPageEntry |=3D IA32_PG_D; @@ -734,10 +735,11 @@ SetShadowStack ( EFI_STATUS Status; =20 SetPageTableBase (Cr3); - - Status =3D SmmSetMemoryAttributes (BaseAddress, Length, EFI_MEMORY_RO); + mIsShadowStack =3D TRUE; + Status =3D SmmSetMemoryAttributes (BaseAddress, Length, EFI_MEMO= RY_RO); =20 SetPageTableBase (0); + mIsShadowStack =3D FALSE; =20 return Status; } --=20 2.31.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92337): https://edk2.groups.io/g/devel/message/92337 Mute This Topic: https://groups.io/mt/92952029/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-