z:sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/mm/page_table_checkmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/mm/page_table_checkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/mm/page_table_checkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/mm/page_table_checkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/mm/page_table_checkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/mm/page_table_checkmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhT/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/mm/page_table_check.rsthKubhsection)}(hhh](htitle)}(h 页表检查h]h 页表检查}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h概述h]h概述}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hQ页表检查允许通过确保防止某些类型的内存损坏来强化内核。h]hQ页表检查允许通过确保防止某些类型的内存损坏来强化内核。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h当新的页面可以从用户空间访问时,页表检查通过将它们的页表项(PTEs PMD等)添加到页表中来执行额外 的验证。h]h当新的页面可以从用户空间访问时,页表检查通过将它们的页表项(PTEs PMD等)添加到页表中来执行额外 的验证。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hX在检测到损坏的情况下,内核会被崩溃。页表检查有一个小的性能和内存开销。因此,它在默认情况下是禁用 的,但是在额外的加固超过性能成本的系统上,可以选择启用。另外,由于页表检查是同步的,它可以帮助调 试双映射内存损坏问题,在错误的映射发生时崩溃内核,而不是在内存损坏错误发生后内核崩溃。h]hX在检测到损坏的情况下,内核会被崩溃。页表检查有一个小的性能和内存开销。因此,它在默认情况下是禁用 的,但是在额外的加固超过性能成本的系统上,可以选择启用。另外,由于页表检查是同步的,它可以帮助调 试双映射内存损坏问题,在错误的映射发生时崩溃内核,而不是在内存损坏错误发生后内核崩溃。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]id2ah ]h"]概述ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h双重映射检测逻辑h]h双重映射检测逻辑}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j)hj&ubj*)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j)hj&ubj*)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j)hj&ubj*)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j)hj&ubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hCurrent Mappingh]hCurrent Mapping}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj_ubah}(h]h ]h"]h$]h&]uh1j]hjZubj^)}(hhh]h)}(h New mappingh]h New mapping}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjvubah}(h]h ]h"]h$]h&]uh1j]hjZubj^)}(hhh]h)}(h Permissionsh]h Permissions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1j]hjZubj^)}(hhh]h)}(hRuleh]hRule}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1j]hjZubeh}(h]h ]h"]h$]h&]uh1jXhjUubah}(h]h ]h"]h$]h&]uh1jShj&ubhtbody)}(hhh](jY)}(hhh](j^)}(hhh]h)}(h Anonymoush]h Anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(h Anonymoush]h Anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hReadh]hRead}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hAllowh]hAllow}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1jXhjubjY)}(hhh](j^)}(hhh]h)}(h Anonymoush]h Anonymous}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hj4ubah}(h]h ]h"]h$]h&]uh1j]hj1ubj^)}(hhh]h)}(h Anonymoush]h Anonymous}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjKubah}(h]h ]h"]h$]h&]uh1j]hj1ubj^)}(hhh]h)}(h Read / Writeh]h Read / Write}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjbubah}(h]h ]h"]h$]h&]uh1j]hj1ubj^)}(hhh]h)}(hProhibith]hProhibit}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjyubah}(h]h ]h"]h$]h&]uh1j]hj1ubeh}(h]h ]h"]h$]h&]uh1jXhjubjY)}(hhh](j^)}(hhh]h)}(h Anonymoush]h Anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hNamedh]hNamed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hAnyh]hAny}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hProhibith]hProhibit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1jXhjubjY)}(hhh](j^)}(hhh]h)}(hNamedh]hNamed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(h Anonymoush]h Anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hAnyh]hAny}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hj,ubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hhh]h)}(hProhibith]hProhibit}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjCubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1jXhjubjY)}(hhh](j^)}(hhh]h)}(hNamedh]hNamed}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjcubah}(h]h ]h"]h$]h&]uh1j]hj`ubj^)}(hhh]h)}(hNamedh]hNamed}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjzubah}(h]h ]h"]h$]h&]uh1j]hj`ubj^)}(hhh]h)}(hAnyh]hAny}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1j]hj`ubj^)}(hhh]h)}(hAllowh]hAllow}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1j]hj`ubeh}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]colsKuh1j$hj!ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]id3ah ]h"]双重映射检测逻辑ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h启用页表检查h]h启用页表检查}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK.ubh)}(h用以下方法构建内核:h]h用以下方法构建内核:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjhhubh bullet_list)}(hhh](h list_item)}(hbPAGE_TABLE_CHECK=y 注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。 h]h)}(haPAGE_TABLE_CHECK=y 注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。h]haPAGE_TABLE_CHECK=y 注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h3使用 "page_table_check=on" 内核参数启动。 h]h)}(h2使用 "page_table_check=on" 内核参数启动。h]h6使用 “page_table_check=on” 内核参数启动。}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhK2hjhhubh)}(h可以选择用PAGE_TABLE_CHECK_ENFORCED来构建内核,以便在没有额外的内核参数的情况下获得页表 支持。h]h可以选择用PAGE_TABLE_CHECK_ENFORCED来构建内核,以便在没有额外的内核参数的情况下获得页表 支持。}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjhhubeh}(h]id4ah ]h"]启用页表检查ah$]h&]uh1hhhhhhhhK.ubh)}(hhh](h)}(h实现注意事项h]h实现注意事项}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThhhhhK;ubh)}(h我们特意决定不使用 VMA 信息,以避免依赖于 MM 状态(除了有限的 “struct page” 信息)。页表检查 独立于 Linux-MM 状态机,它验证用户可访问的页面不会被错误地共享。h]h我们特意决定不使用 VMA 信息,以避免依赖于 MM 状态(除了有限的 “struct page” 信息)。页表检查 独立于 Linux-MM 状态机,它验证用户可访问的页面不会被错误地共享。}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hjThhubh)}(hX[PAGE_TABLE_CHECK 依赖于 EXCLUSIVE_SYSTEM_RAM。原因在于,若没有 EXCLUSIVE_SYSTEM_RAM, 用户被允许通过 /dev/mem 将任意物理内存区域映射到用户空间。同时,页面可能在映射到用户空间期间 改变自己的属性(例如,从匿名页面变为命名页面),导致页表检查检测到“损坏”。h]hX[PAGE_TABLE_CHECK 依赖于 EXCLUSIVE_SYSTEM_RAM。原因在于,若没有 EXCLUSIVE_SYSTEM_RAM, 用户被允许通过 /dev/mem 将任意物理内存区域映射到用户空间。同时,页面可能在映射到用户空间期间 改变自己的属性(例如,从匿名页面变为命名页面),导致页表检查检测到“损坏”。}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjThhubh)}(h即使有 EXCLUSIVE_SYSTEM_RAM,I/O 页面可能仍然被允许通过 /dev/mem 映射。然而,这些页面始终 被视为命名页面,所以它们不会破坏页表检查中使用的逻辑。h]h即使有 EXCLUSIVE_SYSTEM_RAM,I/O 页面可能仍然被允许通过 /dev/mem 映射。然而,这些页面始终 被视为命名页面,所以它们不会破坏页表检查中使用的逻辑。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjThhubeh}(h]id5ah ]h"]实现注意事项ah$]h&]uh1hhhhhhhhK;ubeh}(h]id1ah ]h"] 页表检查ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksj]footnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjj jjjjQjNjju nametypes}(jj jjQjuh}(jhjhjjjNjjjTu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.