去年 6 月,处于安全性的考虑,并且为了防止随意调用 MSR 寄存器引起内核问题,Linux 引入了限制从用户空间写入 MSR 寄存器的补丁。现在,根据一些尚未被合并的补丁,对某些调用寄存器或使用选择 CPU 指令的内核模块将施加新的限制。
第一个限制是禁止一些 CPL0 指令:禁止在全局描述符表 GDT(global descriptor table)上调用模块或返回用户空间,并且在模块试图更改寄存器状态或弄乱FS / GS 基址时输出错误信息。
第二个限制是禁止内核模块直接写入 CRn、XCRn 和 DRn 寄存器。如果仍要写入,需要通过合适的访问器。
目前,这些补丁尚未合并入主线,详细内容请查看 x86/module。
暂无回复。