Revision: 18588
          http://sourceforge.net/p/edk2/code/18588
Author:   abiesheuvel
Date:     2015-10-08 18:52:25 +0000 (Thu, 08 Oct 2015)
Log Message:
-----------
MdeModulePkg/DxeIplPeim: implement non-exec stack for ARM/AARCH64

Mark the DXE stack region as non-executable right before handing
off to the DXE core, by invoking the appropriate ArmLib function.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
Reviewed-by: Feng Tian <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Core/DxeIplPeim/Arm/DxeLoadFunc.c
    trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf

Modified: trunk/edk2/MdeModulePkg/Core/DxeIplPeim/Arm/DxeLoadFunc.c
===================================================================
--- trunk/edk2/MdeModulePkg/Core/DxeIplPeim/Arm/DxeLoadFunc.c   2015-10-08 
18:52:16 UTC (rev 18587)
+++ trunk/edk2/MdeModulePkg/Core/DxeIplPeim/Arm/DxeLoadFunc.c   2015-10-08 
18:52:25 UTC (rev 18588)
@@ -16,6 +16,8 @@
 
 #include "DxeIpl.h"
 
+#include <Library/ArmLib.h>
+
 /**
    Transfers control to DxeCore.
 
@@ -43,6 +45,11 @@
   BaseOfStack = AllocatePages (EFI_SIZE_TO_PAGES (STACK_SIZE));
   ASSERT (BaseOfStack != NULL);
 
+  if (PcdGetBool (PcdSetNxForStack)) {
+    Status = ArmSetMemoryRegionNoExec ((UINTN)BaseOfStack, STACK_SIZE);
+    ASSERT_EFI_ERROR (Status);
+  }
+
   //
   // Compute the top of the stack we were allocated. Pre-allocate a UINTN
   // for safety.

Modified: trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
===================================================================
--- trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf  2015-10-08 18:52:16 UTC 
(rev 18587)
+++ trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf  2015-10-08 18:52:25 UTC 
(rev 18588)
@@ -61,6 +61,9 @@
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
 
+[Packages.ARM, Packages.AARCH64]
+  ArmPkg/ArmPkg.dec
+
 [LibraryClasses]
   PcdLib
   MemoryAllocationLib
@@ -76,6 +79,9 @@
   DebugAgentLib
   PeiServicesTablePointerLib
 
+[LibraryClasses.ARM, LibraryClasses.AARCH64]
+  ArmLib
+
 [Ppis]
   gEfiDxeIplPpiGuid                 ## PRODUCES
   gEfiPeiDecompressPpiGuid          ## PRODUCES
@@ -104,6 +110,8 @@
 
 [Pcd.IA32,Pcd.X64]
   gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable              ## 
SOMETIMES_CONSUMES
+
+[Pcd.IA32,Pcd.X64,Pcd.ARM,Pcd.AARCH64]
   gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack               ## 
SOMETIMES_CONSUMES
 
 [Depex]


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to