]> git.proxmox.com Git - mirror_edk2.git/commit
MdeModulePkg/Core: Fix heap guard issues
authorJian J Wang <jian.j.wang@intel.com>
Wed, 20 Dec 2017 08:47:15 +0000 (16:47 +0800)
committerStar Zeng <star.zeng@intel.com>
Tue, 26 Dec 2017 10:07:27 +0000 (18:07 +0800)
commitc44218e5f40880e3100bdf4d112672e8dd56b94a
treecc4abdb4e586406d9234ecde2b64b057b2e6e4e1
parent14b351e2ed8586f144dd3cd2e0a25082c1a32837
MdeModulePkg/Core: Fix heap guard issues

Three issues addressed here:

a. Make NX memory protection and heap guard to be compatible
The solution is to check PcdDxeNxMemoryProtectionPolicy in Heap Guard to
see if the free memory should be set to NX, and set the Guard page to NX
before it's freed back to memory pool. This can solve the issue which NX
setting would be overwritten by Heap Guard feature in certain
configuration.

b. Returned pool address was not 8-byte aligned sometimes
This happened only when BIT7 is not set in PcdHeapGuardPropertyMask. Since
8-byte alignment is UEFI spec required, letting allocated pool adjacent to
tail guard page cannot be guaranteed.

c. NULL address handling due to allocation failure
When allocation failure, normally a NULL will be returned. But Heap Guard
code will still try to adjust the starting address of it, which will cause
a non-NULL pointer returned.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
MdeModulePkg/Core/Dxe/Mem/HeapGuard.c
MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
MdeModulePkg/Core/PiSmmCore/HeapGuard.c