从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 标题:x86/mtrr: Check if fixed MTRRs exist before saving them - 描述:MTRRs(Memory Type Range Registers)有一个过时的固定变体,用于对640K-1MB区域进行精细粒度的缓存控制,该变体使用单独的MSRs(Memory Type Range Registers)。这个固定变体在MTRR能力MSR中有一个单独的能力位。 - 问题:在所有支持MTRR的x86 CPU中,这个单独的能力位被设置,因此mtrr_save_state()函数在访问固定MTRR MSR时没有检查这个能力位。 - 影响:在不支持固定MTRR能力的CPU上,这会导致一个#GP(General Protection Fault)异常。虽然#GP本身是无害的,因为RDMSR故障被处理得当,但会导致WARN_ON()。 2. 修复措施: - 补丁:补丁修复了这个问题,确保在保存MTRRs之前检查固定MTRR的能力位。 - 作者:Andi Kleen - 签署:Andi Kleen 和 Thomas Gleixner - 联系人:stable@vger.kernel.org - 链接:https://lore.kernel.org/all/20240808000244.946864-1-ak@linux.intel.com 3. 代码更改: - 文件:arch/x86/kernel/cpu/mtrr/mtrr.c - 更改内容:在mtrr_save_state()函数中添加了检查固定MTRR能力位的代码。 4. 补丁状态: - 状态:已修复,补丁已应用到内核中。 这些信息表明,这个漏洞是由于MTRR能力检查不足导致的,修复措施是通过在保存MTRRs之前检查固定MTRR的能力位来实现的。