从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题描述:i40e驱动存在一个race condition(竞态条件),导致MAC/VLAN过滤器在高负载下变得不一致和泄漏。 - 问题原因:当多个线程同时修改MAC/VLAN过滤器时,线程T0在 中分配过滤器,线程T1在 中释放过滤器,导致过滤器在 中被引用,从而引发错误。 2. 修复方法: - 新状态引入:引入了一个新的中间状态 ,用于在过滤器被添加到 时使用。 - 状态管理:过滤器不能直接从哈希列表中删除,必须通过完整的处理过程来删除。 3. 修复代码: - 文件更改:涉及 、 和 三个文件。 - 代码更改:在 中添加了新的过滤器状态,修改了过滤器状态的枚举和字符串表示。 - 逻辑调整:在 中调整了过滤器状态的计数和添加逻辑,确保新过滤器在正确状态下被添加到哈希列表中。 4. 测试和验证: - 测试步骤:通过运行多个虚拟功能(VFs)并应用高负载操作来触发问题。 - 测试结果:在dmesg中观察到错误信息。 - 修复验证:通过测试确认修复了问题。 5. 签名和审查: - 签名:由Aleksandr Loktionov和Tony Nguyen签署。 - 测试:由Pucha Himasekhar Reddy进行测试。 - 审查:由Michal Schmidt进行审查。 这些信息详细描述了漏洞的背景、修复方法、代码更改和测试验证过程,有助于理解如何通过引入新的状态和逻辑调整来解决竞态条件问题。