从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题:在检测vmap堆栈溢出时,riscv首先切换到所谓的阴影堆栈,然后使用这个阴影堆栈调用get_overflow_stack()来获取溢出堆栈。然而,当两个或多个hart同时使用同一个阴影堆栈时,会发生竞争。 - 解决方案:引入spin_shadow_stack原子变量,该变量将在原子方式下交换其自身地址和0。当该变量被设置时,表示阴影堆栈正在被使用;当该变量被清除时,表示阴影堆栈未被使用。 2. 修复代码: - 文件: 、 、 - 修改内容: - 在 中,添加了 宏。 - 在 中,添加了 变量的定义和使用。 - 在 中,添加了 变量的定义和使用。 3. 修复细节: - 在 中,添加了 变量的定义和使用。 - 在 中,添加了 变量的定义和使用。 4. 修复过程: - 在检测到vmap堆栈溢出时,首先切换到阴影堆栈。 - 使用 变量来保护阴影堆栈,防止多个hart同时使用同一个阴影堆栈。 - 当 被设置时,表示阴影堆栈正在被使用;当 被清除时,表示阴影堆栈未被使用。 5. 修复影响: - 修复了31da94c25aea ("riscv: add VMAP_STACK overflow detection")问题。 - 修复了31da94c25aea ("riscv: add VMAP_STACK overflow detection")问题。 6. 修复作者: - Jisheng Zhang () - Guo Ren () - Palmer Dabbel () - Sasha Levin () 7. 修复状态: - 已经在riscv内核中实现并提交到git仓库。 通过这些信息,我们可以了解到这个漏洞的修复过程和修复细节,以及修复后的代码变化。