public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Hao Wu <hao.a.wu@intel.com>
To: edk2-devel@lists.01.org
Cc: Hao Wu <hao.a.wu@intel.com>, Jian J Wang <jian.j.wang@intel.com>,
	Star Zeng <star.zeng@intel.com>, Eric Dong <eric.dong@intel.com>,
	Jiewen Yao <jiewen.yao@intel.com>, Ruiyu Ni <ruiyu.ni@intel.com>
Subject: [PATCH 1/2] MdeModulePkg/Core: Refine handling NULL detection in NX setting
Date: Tue,  6 Mar 2018 20:11:21 +0800	[thread overview]
Message-ID: <20180306121122.4704-2-hao.a.wu@intel.com> (raw)
In-Reply-To: <20180306121122.4704-1-hao.a.wu@intel.com>

The commit rewrites the logic in function
InitializeDxeNxMemoryProtectionPolicy() for handling the first page
(page 0) when NULL pointer detection feature is enabled.

Instead of skip setting the page 0, the codes will now override the
attribute setting of page 0 by adding the 'EFI_MEMORY_RP' attribute.

The purpose is to make it easy for other special handlings of pages
(e.g. the first page of the stack when stack guard feature is enabled).

Cc: Jian J Wang <jian.j.wang@intel.com>
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: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
index 455ed35f9a..a2ea445eef 100644
--- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
+++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c
@@ -19,7 +19,7 @@
 
   Once the image is unloaded, the protection is removed automatically.
 
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
 which accompanies this distribution.  The full text of the license may be found at
@@ -846,23 +846,23 @@ InitializeDxeNxMemoryProtectionPolicy (
 
     Attributes = GetPermissionAttributeForMemoryType (MemoryMapEntry->Type);
     if (Attributes != 0) {
+      SetUefiImageMemoryAttributes (
+        MemoryMapEntry->PhysicalStart,
+        LShiftU64 (MemoryMapEntry->NumberOfPages, EFI_PAGE_SHIFT),
+        Attributes);
+
       if (MemoryMapEntry->PhysicalStart == 0 &&
           PcdGet8 (PcdNullPointerDetectionPropertyMask) != 0) {
 
         ASSERT (MemoryMapEntry->NumberOfPages > 0);
         //
-        // Skip page 0 if NULL pointer detection is enabled to avoid attributes
-        // overwritten.
+        // Add EFI_MEMORY_RP attribute for page 0 if NULL pointer detection is
+        // enabled.
         //
         SetUefiImageMemoryAttributes (
-          MemoryMapEntry->PhysicalStart + EFI_PAGE_SIZE,
-          LShiftU64 (MemoryMapEntry->NumberOfPages - 1, EFI_PAGE_SHIFT),
-          Attributes);
-      } else {
-        SetUefiImageMemoryAttributes (
-          MemoryMapEntry->PhysicalStart,
-          LShiftU64 (MemoryMapEntry->NumberOfPages, EFI_PAGE_SHIFT),
-          Attributes);
+          0,
+          EFI_PAGES_TO_SIZE (1),
+          EFI_MEMORY_RP | Attributes);
       }
     }
     MemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);
-- 
2.12.0.windows.1



  reply	other threads:[~2018-03-06 12:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-06 12:11 [PATCH 0/2] Resolve feature conflict between NX and Stack guard Hao Wu
2018-03-06 12:11 ` Hao Wu [this message]
2018-03-06 13:05   ` [PATCH 1/2] MdeModulePkg/Core: Refine handling NULL detection in NX setting Yao, Jiewen
2018-03-06 12:11 ` [PATCH 2/2] MdeModulePkg/Core: Fix feature conflict between NX and Stack guard Hao Wu
2018-03-06 12:16   ` Zeng, Star
2018-03-06 13:04     ` Yao, Jiewen
2018-03-06 13:10       ` Yao, Jiewen
2018-03-06 13:11         ` Wu, Hao A

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180306121122.4704-2-hao.a.wu@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox