public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Jian J Wang <jian.j.wang@intel.com>
To: edk2-devel@lists.01.org
Subject: [PATCH v3 0/2] Enable page table write protection
Date: Tue,  5 Dec 2017 16:16:02 +0800	[thread overview]
Message-ID: <20171205081604.11644-1-jian.j.wang@intel.com> (raw)

> v3 changes:
>  a. According to code review comments, remove the public definitions of
>     page table pool. Now the DxeIpl and CpuDxe will have their own page
>     table pool but in the same mechanism. Related PCDs, GUDI and headers
>     are also removed.
>  b. Apply protection to all page tables, including new ones added in
>     CpuDxe driver.
>  c. Code/comments cleanup.

> v2 changes:
>  a. Enable protection on any newly added page table after DxeIpl.
>  b. Introduce page table pool concept to make page table allocation
>     and protection easier and error free.

Write Protect feature (CR0.WP) is always enabled in driver UefiCpuPkg/CpuDxe.
But the memory pages used for page table are not set as read-only in the driver
DxeIplPeim, after the paging is setup. This might jeopardize the page table
integrity if there's buffer overflow occured in other part of system.

This patch series will change this situation by clearing R/W bit in page attribute
of the pages used as page table.

Validation works include booting Windows (10/server 2016) and Linux (Fedora/Ubuntu)
on OVMF and Intel real platform.

Jian J Wang (2):
  MdeModulePkg/DxeIpl: Mark page table as read-only
  UefiCpuPkg/CpuDxe: Enable protection for newly added page table

 MdeModulePkg/Core/DxeIplPeim/DxeIpl.h            |  34 +++
 MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c  |   8 +-
 MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 301 ++++++++++++++++++++++-
 MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.h |  26 ++
 UefiCpuPkg/CpuDxe/CpuDxe.c                       |  17 +-
 UefiCpuPkg/CpuDxe/CpuDxe.h                       |   2 +
 UefiCpuPkg/CpuDxe/CpuPageTable.c                 | 226 ++++++++++++++++-
 UefiCpuPkg/CpuDxe/CpuPageTable.h                 |  34 +++
 8 files changed, 635 insertions(+), 13 deletions(-)

-- 
2.15.1.windows.2



             reply	other threads:[~2017-12-05  8:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-05  8:16 Jian J Wang [this message]
2017-12-05  8:16 ` [PATCH v3 1/2] MdeModulePkg/DxeIpl: Mark page table as read-only Jian J Wang
2017-12-06 10:04   ` Ni, Ruiyu
2017-12-06 13:05     ` Wang, Jian J
2017-12-05  8:16 ` [PATCH v3 2/2] UefiCpuPkg/CpuDxe: Enable protection for newly added page table Jian J Wang
2017-12-05 20:05 ` [PATCH v3 0/2] Enable page table write protection Laszlo Ersek
2017-12-06  0:15   ` Wang, Jian J
2017-12-06  7:11 ` Yao, Jiewen

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=20171205081604.11644-1-jian.j.wang@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