xref: /openbmc/linux/Documentation/translations/zh_CN/mm/page_table_check.rst (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*ee65728eSMike Rapoport.. SPDX-License-Identifier: GPL-2.0
2*ee65728eSMike Rapoport
3*ee65728eSMike Rapoport:Original: Documentation/mm/page_table_check.rst
4*ee65728eSMike Rapoport
5*ee65728eSMike Rapoport:翻译:
6*ee65728eSMike Rapoport
7*ee65728eSMike Rapoport 司延腾 Yanteng Si <siyanteng@loongson.cn>
8*ee65728eSMike Rapoport
9*ee65728eSMike Rapoport:校译:
10*ee65728eSMike Rapoport
11*ee65728eSMike Rapoport
12*ee65728eSMike Rapoport========
13*ee65728eSMike Rapoport页表检查
14*ee65728eSMike Rapoport========
15*ee65728eSMike Rapoport
16*ee65728eSMike Rapoport概述
17*ee65728eSMike Rapoport====
18*ee65728eSMike Rapoport
19*ee65728eSMike Rapoport页表检查允许通过确保防止某些类型的内存损坏来强化内核。
20*ee65728eSMike Rapoport
21*ee65728eSMike Rapoport当新的页面可以从用户空间访问时,页表检查通过将它们的页表项(PTEs PMD等)添加到页表中来执行额外
22*ee65728eSMike Rapoport的验证。
23*ee65728eSMike Rapoport
24*ee65728eSMike Rapoport在检测到损坏的情况下,内核会被崩溃。页表检查有一个小的性能和内存开销。因此,它在默认情况下是禁用
25*ee65728eSMike Rapoport的,但是在额外的加固超过性能成本的系统上,可以选择启用。另外,由于页表检查是同步的,它可以帮助调
26*ee65728eSMike Rapoport试双映射内存损坏问题,在错误的映射发生时崩溃内核,而不是在内存损坏错误发生后内核崩溃。
27*ee65728eSMike Rapoport
28*ee65728eSMike Rapoport双重映射检测逻辑
29*ee65728eSMike Rapoport================
30*ee65728eSMike Rapoport
31*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
32*ee65728eSMike Rapoport| Current Mapping   | New mapping       | Permissions       | Rule             |
33*ee65728eSMike Rapoport+===================+===================+===================+==================+
34*ee65728eSMike Rapoport| Anonymous         | Anonymous         | Read              | Allow            |
35*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
36*ee65728eSMike Rapoport| Anonymous         | Anonymous         | Read / Write      | Prohibit         |
37*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
38*ee65728eSMike Rapoport| Anonymous         | Named             | Any               | Prohibit         |
39*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
40*ee65728eSMike Rapoport| Named             | Anonymous         | Any               | Prohibit         |
41*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
42*ee65728eSMike Rapoport| Named             | Named             | Any               | Allow            |
43*ee65728eSMike Rapoport+-------------------+-------------------+-------------------+------------------+
44*ee65728eSMike Rapoport
45*ee65728eSMike Rapoport启用页表检查
46*ee65728eSMike Rapoport============
47*ee65728eSMike Rapoport
48*ee65728eSMike Rapoport用以下方法构建内核:
49*ee65728eSMike Rapoport
50*ee65728eSMike Rapoport- PAGE_TABLE_CHECK=y
51*ee65728eSMike Rapoport  注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。
52*ee65728eSMike Rapoport
53*ee65728eSMike Rapoport- 使用 "page_table_check=on" 内核参数启动。
54*ee65728eSMike Rapoport
55*ee65728eSMike Rapoport可以选择用PAGE_TABLE_CHECK_ENFORCED来构建内核,以便在没有额外的内核参数的情况下获得页表
56*ee65728eSMike Rapoport支持。
57