从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 标题: - 描述: 和其他函数可以将 skb->sk 作为参数传递。如果 skb 是一个片段,并且在重新组装之前被释放,那么 skb 将不会被释放。这会影响通过 netfilter 或类似模块(如 openvswitch 或 ct_act.c)重新组装的 skb。 2. 影响范围: - 模块: 和 - 问题:当 skb 在输出路径中被释放时,下游模块(如 FQ 包调度器)将无法正常工作。 3. 修复措施: - 建议:在 skb->sk 被设置时,需要改变 函数,使其在 skb->sk 被释放时只使用 。 - 实现:在 skb->sk 被释放时,将 skb->sk 重新放入片段队列,并在 skb->sk 被重新组装时将其从队列中移除。 4. 补丁内容: - 文件: 、 、 、 和 - 修改:在这些文件中添加了新的结构体和函数,以跟踪 skb 的状态和处理重新组装的过程。 5. 修复过程: - 问题:在 skb 被重新组装后,ip_do_fragment() 将复制 skb->sk 到新的片段,并设置销毁器到 sock_wfree。这会导致 skb_wmem 出错。 - 解决方案:在 skb_wmem 出错时,将 skb->sk 重新放入片段队列,并在 skb->sk 被重新组装时将其从队列中移除。 6. 补丁应用: - 应用:在 、 、 、 和 文件中应用补丁。 通过这些信息,我们可以了解该漏洞的背景、影响范围、修复措施和补丁内容,从而更好地理解如何修复和应用补丁。