Skip to content

Commit dabc502

Browse files
os-dkenlautner
authored andcommitted
Mark NonDiscoverablePciDeviceIo Memory XP By Default (#374)
# Preface Please ensure you have read the [contribution docs](https://github.com/microsoft/mu/blob/master/CONTRIBUTING.md) prior to submitting the pull request. In particular, [pull request guidelines](https://github.com/microsoft/mu/blob/master/CONTRIBUTING.md#pull-request-best-practices). ## Description When allocating memory for a non-discoverable PCI device's IO, the current core code removes the XP attribute, allowing code to execute from that region. This is a security vulnerability and unneeded. This change updates to mark the region as XP when allocating memory for the non-discoverable PCI device. These allocations in this function are limited to `EfiBootServicesData` and `EfiRuntimeServicesData`, which we expect to be XP. For each item, place an "x" in between `[` and `]` if true. Example: `[x]`. _(you can also check items in the GitHub UI)_ - [x] Impacts functionality? - **Functionality** - Does the change ultimately impact how firmware functions? - Examples: Add a new library, publish a new PPI, update an algorithm, ... - [x] Impacts security? - **Security** - Does the change have a direct security impact on an application, flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ... - [ ] Breaking change? - **Breaking change** - Will anyone consuming this change experience a break in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ... - [ ] Includes tests? - **Tests** - Does the change include any explicit test code? - Examples: Unit tests, integration tests, robot tests, ... - [ ] Includes documentation? - **Documentation** - Does the change contain explicit documentation additions outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ... ## How This Was Tested Tested on QEMU and a physical platform. ## Integration Instructions N/A.
1 parent 067b1a1 commit dabc502

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1181,7 +1181,7 @@ NonCoherentPciIoAllocateBuffer (
11811181
Status = gDS->SetMemorySpaceAttributes (
11821182
(EFI_PHYSICAL_ADDRESS)(UINTN)AllocAddress,
11831183
EFI_PAGES_TO_SIZE (Pages),
1184-
MemType
1184+
MemType | EFI_MEMORY_XP // MU_CHANGE: Alloc MMIO memory XP by default
11851185
);
11861186
if (EFI_ERROR (Status)) {
11871187
goto RemoveList;

0 commit comments

Comments
 (0)