关键信息 漏洞类型: 未初始化指针引用 (Uninitialized Pointer Dereference) 影响模块: pNFS (Parallel NFS) 的 block/scsi layout 实现 问题描述: - 在尝试编码 extent 时发生错误。 - 函数在重试编码 extent 时重新分配更大的缓冲区,但 页面数组仅在重试循环之后初始化。 - 在每次迭代中都会被调用,并尝试将页面放入数组中,从而导致对未初始化指针的解引用。 - 缓冲区大小没有限制,当 extent 数量过多时,客户端可能会创建一个大于服务器接受的最大 RPC 大小的布局提交。 测试观察: - 当处理小文件、追加数据到文件末尾或预分配 extent 之前写入时,一个内存页通常足够。 - 当填充一个大文件而不进行预分配时,extent 数量可能非常大,计数已写 extent 的数量在 中帮助不大。由于 的解锁和锁定之间,重新分配的缓冲区可能再次不够大。 修复措施: - 修改了 文件,共修改了 15 行插入和 5 行删除。 相关链接: - Lore 链接 贡献者: - 主要开发者: Sergey Bashiurov, Konstantin Evtushenko - 审查者: Christoph Hellwig - 签名者: Trond Myklebust, Sasha Levin