Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 :Original: Documentation/mm/page_table_check.rst
0004 
0005 :翻译:
0006 
0007  司延腾 Yanteng Si <siyanteng@loongson.cn>
0008 
0009 :校译:
0010 
0011 
0012 ========
0013 页表检查
0014 ========
0015 
0016 概述
0017 ====
0018 
0019 页表检查允许通过确保防止某些类型的内存损坏来强化内核。
0020 
0021 当新的页面可以从用户空间访问时,页表检查通过将它们的页表项(PTEs PMD等)添加到页表中来执行额外
0022 的验证。
0023 
0024 在检测到损坏的情况下,内核会被崩溃。页表检查有一个小的性能和内存开销。因此,它在默认情况下是禁用
0025 的,但是在额外的加固超过性能成本的系统上,可以选择启用。另外,由于页表检查是同步的,它可以帮助调
0026 试双映射内存损坏问题,在错误的映射发生时崩溃内核,而不是在内存损坏错误发生后内核崩溃。
0027 
0028 双重映射检测逻辑
0029 ================
0030 
0031 +-------------------+-------------------+-------------------+------------------+
0032 | Current Mapping   | New mapping       | Permissions       | Rule             |
0033 +===================+===================+===================+==================+
0034 | Anonymous         | Anonymous         | Read              | Allow            |
0035 +-------------------+-------------------+-------------------+------------------+
0036 | Anonymous         | Anonymous         | Read / Write      | Prohibit         |
0037 +-------------------+-------------------+-------------------+------------------+
0038 | Anonymous         | Named             | Any               | Prohibit         |
0039 +-------------------+-------------------+-------------------+------------------+
0040 | Named             | Anonymous         | Any               | Prohibit         |
0041 +-------------------+-------------------+-------------------+------------------+
0042 | Named             | Named             | Any               | Allow            |
0043 +-------------------+-------------------+-------------------+------------------+
0044 
0045 启用页表检查
0046 ============
0047 
0048 用以下方法构建内核:
0049 
0050 - PAGE_TABLE_CHECK=y
0051   注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。
0052 
0053 - 使用 "page_table_check=on" 内核参数启动。
0054 
0055 可以选择用PAGE_TABLE_CHECK_ENFORCED来构建内核,以便在没有额外的内核参数的情况下获得页表
0056 支持。