从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 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时没有检查这个能力位。 2. 修复措施: - 修复代码:在mtrr_save_state()函数中添加了缺失的能力检查。 - 修复原因:在不支持固定MTRR能力的CPU上,这会导致一个#GP(General Protection Fault)异常。虽然这个异常本身是无害的,因为RDMSR故障被处理得当,但会导致WARN_ON()。 3. 修复补丁: - 补丁链接:https://lore.kernel.org/all/20240808000244.946864-1-ak@linux.intel.com 4. 作者和贡献者: - Andi Kleen - Thomas Gleixner - Greg Kroah-Hartman 5. 补丁状态: - 状态:已合并到上游(upstream)。 6. 补丁内容: - 补丁文件:arch/x86/kernel/cpu/mtrr/mtrr.c - 补丁内容:在mtrr_save_state()函数中添加了缺失的能力检查。 这些信息表明,这个漏洞是由于MTRR能力检查的缺失导致的,修复措施是在mtrr_save_state()函数中添加了缺失的能力检查。