audk/MdeModulePkg/Core/Dxe/Mem
Jian J Wang a6a0a59756 MdeModulePkg/Core: fix feature conflict between NX and heap guard
Considering following scenario (both NX memory protection and heap guard
are enabled):

   1. Allocate 3 pages. The attributes of adjacent memory pages will be

      |NOT-PRESENT|  present  |  present  |  present  |NOT-PRESENT|

   2. Free the middle page. The attributes of adjacent memory pages should be

      |NOT-PRESENT|  present  |NOT-PRESENT|  present  |NOT-PRESENT|

      But the NX feature will overwrite the attributes of middle page. So it
      looks still like below, which is wrong.

      |NOT-PRESENT|  present  |  PRESENT  |  present  |NOT-PRESENT|

The solution is checking the first and/or last page of a memory block to be
marked as NX, and skipping them if they are Guard pages.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2018-02-02 09:50:16 +08:00
..
HeapGuard.c MdeModulePkg/Core: fix feature conflict between NX and heap guard 2018-02-02 09:50:16 +08:00
HeapGuard.h MdeModulePkg/Core: fix feature conflict between NX and heap guard 2018-02-02 09:50:16 +08:00
Imem.h MdeModulePkg: Fix unix style of EOL 2017-11-21 20:24:37 +08:00
MemData.c Update the copyright notice format 2010-04-24 09:49:11 +00:00
MemoryProfileRecord.c MdeModulePkg DxeCore: Remove unreferenced symbol for memory profile 2017-03-15 16:47:20 +08:00
Page.c MdeModulePkg/Core: fix a logic hole in page free 2018-01-19 14:16:11 +08:00
Pool.c MdeModulePkg/Core: fix guard page missing issue 2018-02-02 09:50:15 +08:00