From nobody Mon Feb 9 04:44:20 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+109408+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+109408+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1696810078; cv=none; d=zohomail.com; s=zohoarc; b=FN1pZR4d49otqWsc37OqSVlArpDwyRSYNuWvTKR53rmO9/4oJ8JrcBEt9zgxGoLPxC+j6dQR8L6qkfLj3dl4ja+c8HtYzzki40JGu/UXA/UsjdKV7YJk2WW3hY/+Q28RgJuh1/kyA6zj6/d3LmPKto3uqwB6PoqUqhwXj3ZcHO0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1696810078; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=wcDUvAfKRshTpsbZ5FLHdY1cWI5qs8piNjK/U8KpM2I=; b=PB0VjOC9PvhpQ1peIbimHWOskuixwtABfmoREHGAIwqcvqFNdlT5i9ViDET2/pVl5BlzlDJhmbVKWr/dfTk8StcjTE9HKE9apWFusqEIuz3IdXzW9vqcyAdEKAIew4noGEsR7RbOJEVQqPqpFtHA2v6Wco/9WBUTSMpaE7lSPUM= 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+109408+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 1696810078214518.0947876262841; Sun, 8 Oct 2023 17:07:58 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=J7BWa0uJzGMM8lZRiwDKid+OmS0qLx8ilMOzJI/w4p0=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1696810077; v=1; b=kDOBs3jX8aENFgSE4bzqmiU1VnPRy4BACEUfYBXAhnC8oSzaoUlI8p4S0z5tYY91P+ozuiYv 6EEiR2mjJYWuWP3ZcVAVLZstVjp1lkTo97VUU9w2IwT55fT76kDCWWWimaCt2h7ywAfgeL1VG7B Y6rGPi+nOjVSFmMgX1pTcI3w= X-Received: by 127.0.0.2 with SMTP id 23q4YY1788612xWmTnb57dDh; Sun, 08 Oct 2023 17:07:57 -0700 X-Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by mx.groups.io with SMTP id smtpd.web11.50032.1696810077426617033 for ; Sun, 08 Oct 2023 17:07:57 -0700 X-Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-578d0d94986so2961564a12.2 for ; Sun, 08 Oct 2023 17:07:57 -0700 (PDT) X-Gm-Message-State: F2riS6y4Uc5OSIqyS6XLfhxnx1787277AA= X-Google-Smtp-Source: AGHT+IH8exWVH+tANDIAeuHTTYeLCujGl56NvQnYBZ8t+4mXdtlc1ibbldx1B7s4TegAvPlXGXLsGQ== X-Received: by 2002:a05:6a20:9152:b0:160:83e1:712f with SMTP id x18-20020a056a20915200b0016083e1712fmr16903369pzc.23.1696810076505; Sun, 08 Oct 2023 17:07:56 -0700 (PDT) X-Received: from localhost.localdomain ([50.46.253.1]) by smtp.gmail.com with ESMTPSA id t20-20020a62ea14000000b0068fcc7f6b00sm5048320pfh.74.2023.10.08.17.07.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 17:07:56 -0700 (PDT) From: "Taylor Beebe" To: devel@edk2.groups.io Cc: Jian J Wang , Liming Gao Subject: [edk2-devel] [PATCH v5 03/28] MdeModulePkg: Add NULL Instances for Get/SetMemoryProtectionsLib Date: Sun, 8 Oct 2023 17:07:15 -0700 Message-ID: <20231009000742.1792-4-taylor.d.beebe@gmail.com> In-Reply-To: <20231009000742.1792-1-taylor.d.beebe@gmail.com> References: <20231009000742.1792-1-taylor.d.beebe@gmail.com> MIME-Version: 1.0 Precedence: Bulk 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,taylor.d.beebe@gmail.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1696810080297100014 Content-Type: text/plain; charset="utf-8" The NULL instances for GetMemoryProtectionsLib and SetMemoryProtectionsLib just zero out the memory protections structure effectively disabling memory protections. Signed-off-by: Taylor Beebe Cc: Jian J Wang Cc: Liming Gao --- MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtectionsLibNull.c= | 29 ++++ MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtectionsLibNull.c= | 144 ++++++++++++++++++++ MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtectionsLibNull.i= nf | 25 ++++ MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtectionsLibNull.i= nf | 25 ++++ MdeModulePkg/MdeModulePkg.dsc = | 4 + 5 files changed, 227 insertions(+) diff --git a/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtecti= onsLibNull.c b/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtec= tionsLibNull.c new file mode 100644 index 000000000000..af341c2c893d --- /dev/null +++ b/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtectionsLibN= ull.c @@ -0,0 +1,29 @@ +/** @file +NULL implementation for GetMemoryProtectionsLib + +Copyright (c) Microsoft Corporation. +SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include + +MEMORY_PROTECTION_SETTINGS_UNION gMps =3D { 0 }; + +/** + Populates gMps global. This function is invoked by the library construct= or and only needs to be + called if library contructors have not yet been invoked. + + @retval EFI_SUCCESS gMps global was populated. + @retval EFI_NOT_FOUND The gMemoryProtectionSettingsGuid HOB was not = found. + @retval EFI_ABORTED The version number of the DXE or MM memory pro= tection settings was invalid. + @retval EFI_UNSUPPORTED NULL implementation called. +**/ +EFI_STATUS +EFIAPI +PopulateMpsGlobal ( + VOID + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtecti= onsLibNull.c b/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtec= tionsLibNull.c new file mode 100644 index 000000000000..0d3a32d70209 --- /dev/null +++ b/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtectionsLibN= ull.c @@ -0,0 +1,144 @@ +/** @file +Library for setting the memory protection settings for DXE. + +Copyright (c) Microsoft Corporation. +SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include + +DXE_MEMORY_PROTECTION_PROFILES DxeMemoryProtectionProfiles[DxeMemoryProte= ctionSettingsMax] =3D { 0 }; +MM_MEMORY_PROTECTION_PROFILES MmMemoryProtectionProfiles[MmMemoryProtect= ionSettingsMax] =3D { 0 }; + +/** + Prevent further changes to the memory protection settings via this + library API. + + @retval EFI_SUCCESS The memory protection settings are locked. + @retval EFI_ABORTED Unable to get/create the memory protection= settings. + @retval EFI_UNSUPPORTED NULL implementation called. +**/ +EFI_STATUS +EFIAPI +LockMemoryProtectionSettings ( + VOID + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Sets the DXE memory protection settings. If DxeMps is NULL, the settings= will be set based + on ProfileIndex. + + @param[in] DxeMps Pointer to the memory protection settings to pu= blish. If NULL, the + settings will be created based on ProfileIndex. + @param[in] ProfileIndex The index of the memory protection profile to u= se if DxeMps is NULL. + + @retval EFI_SUCCESS The memory protection HOB was successfully= created. + @retval EFI_INVALID_PARAMETER The ProfileIndex was invalid or the versio= n number of the + input DxeMps was not equal to the version = currently present + in the settings. + @retval EFI_ABORTED Unable to get/create the memory protection= settings. + @retval EFI_ACCESS_DENIED The memory protection settings are locked. + @retval EFI_UNSUPPORTED NULL implementation called. +**/ +EFI_STATUS +EFIAPI +SetDxeMemoryProtectionSettings ( + IN DXE_MEMORY_PROTECTION_SETTINGS *DxeMps OPTIONAL, + IN DXE_MEMORY_PROTECTION_PROFILE_INDEX ProfileIndex + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Sets the MM memory protection HOB entry. If MmMps is NULL, the settings = will be set based + on ProfileIndex. + + @param[in] MmMps Pointer to the memory protection settings to pu= blish. If NULL, the + settings will be created based on ProfileIndex. + @param[in] ProfileIndex The index of the memory protection profile to u= se if MmMps is NULL. + + @retval EFI_SUCCESS The memory protection HOB was successfully= created. + @retval EFI_OUT_OF_RESOURCES There was insufficient memory to create th= e HOB. + @retval EFI_INVALID_PARAMETER The ProfileIndex was invalid or the versio= n number of the + input MmMps was not equal to the version c= urrently present + in the settings. + @retval EFI_ABORTED Unable to get/create the memory protection= settings. + @retval EFI_ACCESS_DENIED The memory protection settings are locked. + @retval EFI_UNSUPPORTED NULL implementation called. +**/ +EFI_STATUS +EFIAPI +SetMmMemoryProtectionSettings ( + IN MM_MEMORY_PROTECTION_SETTINGS *MmMps OPTIONAL, + IN MM_MEMORY_PROTECTION_PROFILE_INDEX ProfileIndex + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Copies the current memory protection settings into the input buffer. + + NOTE: The returned settings may not be the final settings used by the + platform on this boot. Unless LockMemoryProtectionSettings() has + been called, settings may be modified by drivers until DXE handoff. + + @param[out] Mps The memory protection settings pointer to populate. + + @retval EFI_SUCCESS The memory protection settings were copied + into the input buffer. + @retval EFI_INVALID_PARAMETER Mps was NULL. + @retval EFI_ABORTED Unable to get/create the memory protection= settings. + @retval EFI_UNSUPPORTED NULL implementation called. +**/ +EFI_STATUS +EFIAPI +GetCurrentMemoryProtectionSettings ( + OUT MEMORY_PROTECTION_SETTINGS *Mps + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Returns TRUE any form of DXE memory protection is currently active. + + NOTE: The returned value may reflect the final settings used by the + platform on this boot. Unless LockMemoryProtectionSettings() has + been called, settings may be modified by drivers until DXE handoff. + + @retval TRUE DXE Memory protection is active. + @retval FALSE DXE Memory protection is not active. +**/ +BOOLEAN +EFIAPI +IsDxeMemoryProtectionActive ( + VOID + ) +{ + return FALSE; +} + +/** + Returns TRUE any form of MM memory protection is currently active. + + NOTE: The returned value may reflect the final settings used by the + platform on this boot. Unless LockMemoryProtectionSettings() has + been called, settings may be modified by drivers until DXE handoff. + + @retval TRUE MM Memory protection is active. + @retval FALSE MM Memory protection is not active. +**/ +BOOLEAN +EFIAPI +IsMmMemoryProtectionActive ( + VOID + ) +{ + return FALSE; +} diff --git a/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtecti= onsLibNull.inf b/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProt= ectionsLibNull.inf new file mode 100644 index 000000000000..e7161412d9dc --- /dev/null +++ b/MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtectionsLibN= ull.inf @@ -0,0 +1,25 @@ +## @file +# NULL implementation for GetMemoryProtectionsLib +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D GetMemoryProtectionsLibNull + FILE_GUID =3D C21A27EE-37DD-4024-8EDA-8BF5088C8CB1 + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D GetMemoryProtectionsLib + +# +# VALID_ARCHITECTURES =3D IA32 X64 AARCH64 +# + +[Sources] + GetMemoryProtectionsLibNull.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec diff --git a/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtecti= onsLibNull.inf b/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProt= ectionsLibNull.inf new file mode 100644 index 000000000000..fa660abe3b64 --- /dev/null +++ b/MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtectionsLibN= ull.inf @@ -0,0 +1,25 @@ +## @file +# Library for setting the memory protection settings for DXE. +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D SetMemoryProtectionsLibNull + FILE_GUID =3D CBD02C10-1F4B-4374-A7B2-BB2547C08433 + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D SetMemoryProtectionsLib|SEC PEI_CORE = PEIM + +# +# VALID_ARCHITECTURES =3D IA32 X64 AARCH64 +# + +[Sources] + SetMemoryProtectionsLibNull.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index c7af921782ee..0b5f2414dd72 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -106,6 +106,8 @@ [LibraryClasses] MmUnblockMemoryLib|MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibN= ull.inf VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseV= ariableFlashInfoLib.inf IpmiCommandLib|MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiComma= ndLibNull.inf + GetMemoryProtectionsLib|MdeModulePkg/Library/GetMemoryProtectionsLib/Get= MemoryProtectionsLibNull.inf + SetMemoryProtectionsLib|MdeModulePkg/Library/SetMemoryProtectionsLib/Set= MemoryProtectionsLibNull.inf =20 [LibraryClasses.EBC.PEIM] IoLib|MdePkg/Library/PeiIoLibCpuIo/PeiIoLibCpuIo.inf @@ -231,6 +233,8 @@ [Components] MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf + MdeModulePkg/Library/GetMemoryProtectionsLib/GetMemoryProtectionsLibNull= .inf + MdeModulePkg/Library/SetMemoryProtectionsLib/SetMemoryProtectionsLibNull= .inf MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTa= bleLib.inf MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf --=20 2.42.0.windows.2 -=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 (#109408): https://edk2.groups.io/g/devel/message/109408 Mute This Topic: https://groups.io/mt/101843343/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-