尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
tlb use_temporary_mm
use_temporary_mm是 x86 架构中一个用于临时切换到一个专用地址空间MM执行敏感操作的函数。它主要服务于内核的文本补丁text patching机制在修改内核代码时提供一层额外的内存保护。核心目的安全地执行敏感内存写入当内核需要修改自己的代码例如应用 alternatives 或修改指令时这些写入操作需要绕过常规的 W^X写异或执行保护。use_temporary_mm允许内核临时切换到一个专用的、临时的地址空间如text_poke_mm在这个空间里建立一个仅对当前 CPU 可见的临时映射从而安全地完成写入而不会将敏感的临时页表映射暴露给其他 CPU 或用户空间。函数逻辑解析这个函数的典型实现如下基于较新内核的清理版本struct mm_struct *use_temporary_mm(struct mm_struct *temp_mm) { struct mm_struct *prev_mm; lockdep_assert_irqs_disabled(); /* * 确保不处于 TLB 惰性模式否则恢复时会陷入不一致状态 */ if (this_cpu_read(cpu_tlbstate_shared.is_lazy)) leave_mm(); prev_mm this_cpu_read(cpu_tlbstate.loaded_mm); switch_mm_irqs_off(NULL, temp_mm, current); /* * 如果硬件断点处于活动状态则禁用它们。 * 用户空间可能在临时 MM 使用的地址上设置了监视点 * 这会导致发送错误的信号或崩溃。 */ if (hw_breakpoint_active()) hw_breakpoint_disable(); return prev_mm; }关键步骤中断必须禁用lockdep_assert_irqs_disabled()确保调用时中断已关闭。这是为了硬性安全如果中断处理程序在临时 MM 激活期间运行它可能会覆盖内核的内存保护。退出 TLB 惰性模式如果当前处于惰性模式必须先调用leave_mm()退出否则恢复时状态会不一致。保存并切换保存当前加载的mmprev_mm然后通过switch_mm_irqs_off切换到临时 MM。禁用硬件断点这是为了防止用户空间设置的监视点干扰临时 MM 中的操作。设计意图与调用关系use_temporary_mm最初是arch/x86/kernel/alternative.c内部的静态函数后来被移到arch/x86/mm/tlb.c并导出以便 EFI 等子系统复用。它的典型调用场景是__text_poke()在修改内核代码前调用它切换环境操作完成后再通过unuse_temporary_mm(prev_mm)恢复原来的地址空间。这种“借用-恢复”的模式使得内核能够在保证安全的前提下执行那些需要绕过常规保护机制的底层操作。
RELATED

相关推荐

USB-C 一线连偶发断连排查:从 PD 供电协商到 USB 重枚举

USB-C 一线连偶发断连排查:从 PD 供电协商到 USB 重枚举

0. 现象 大屏闪一下恢复、摄像头会中掉线、无线键鼠偶发卡顿,重插即好。会自愈,所以进不了工单——但会一直消耗用户的信任。 1. 根因框架:一条线,两份合同 一根全功能 Type-C 同时跑三件事,且分别协商:通道…

📅 2026/10/3 7:16:46
HarmonyOS 7 + Node.js + AppGallery Connect:多设备截图素材矩阵的缺口扫描与发布门禁【鸿蒙心迹】

HarmonyOS 7 + Node.js + AppGallery Connect:多设备截图素材矩阵的缺口扫描与发布门禁【鸿蒙心迹】

上架前最尴尬的素材问题,往往不是“完全没有截图”,而是中文手机页齐全、英文 PC/2in1 少两张;运营表格看着已经打勾,真正切到 AppGallery Connect 的另一个语言和设备页签才发现空位。下面不写审核经验故事,也不虚构某…

📅 2026/10/3 7:16:46
像素匠人(方案小助理):AI驱动的项目方案一站式生成工具,让产品规划提效10倍

像素匠人(方案小助理):AI驱动的项目方案一站式生成工具,让产品规划提效10倍

像素匠人(方案小助理):AI驱动的项目方案一站式生成工具,让产品规划提效10倍 前言 在软件开发行业,从一个想法到落地实施,传统流程往往需要:产品经理梳理需求、绘制脑图、设计原型、技术团队评估…

📅 2026/10/3 7:16:46
MORE NEWS

更多资讯

📰

ESP32芯片与模组怎么选?从裸芯片到量产料号的选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

DRV8818+TM4C129高精度步进电机控制实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

YOLO Windows训练报错修复:PermissionError与OMP Error #15排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

西南交大数据库原理作业:高级数据模型ER图与主键设计避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

RK3576 SD卡识别失败:硬件信号完整性与内核MMC全链路排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

6.2 EMC 深度解析:测试项目、RJ45防护与整改实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬