从这个网页截图中可以获取到以下关于漏洞的关键信息: 漏洞描述: - 在x86/microcode/AMD系统上,当存在没有CPU的NUMA节点时, 函数会遍历所有NUMA节点,检索它们的CPU掩码,并无条件地访问每个掩码的第一个CPU的per-CPU数据。 - 如果某些节点的CPU掩码为空,则会导致数组越界访问。 问题原因: - 根据文档说明,有些内存可能与CPU共享同一节点,而其他内存仅作为内存节点提供。 - 因此,某些节点的CPU掩码可能是空的,没有“第一个CPU”。 具体表现: - 在具有远端内存(因此有无CPU的NUMA节点)的机器上: - 为0 - 是 - 访问per-CPU数组时,索引超出范围。 影响: - 这个问题没有安全影响,因为刷新微代码是一个特权操作。 - 但可能会对可靠性产生影响,因为在刷新微代码更新时可能损坏内存。 触发条件: - 当使用 在刷新微代码的AMD机器上启动时,会出现以下堆栈跟踪错误: 解决方案: - 修改循环,只遍历那些有CPU的NUMA节点,然后再确定。