从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题:在nilfs2的错误路径中,log写入函数在用户数据块被分割到多个日志段时,能够连续地发出I/O请求,但存在两个潜在的错误处理问题。 - 具体问题: - 如果nilfs_sectord_begin_construction()在创建第二个或后续日志时失败,log写入函数会返回,而writeback标志集上的页面/文件将保持未清除。这会导致内存中被清出的inode被挂起。 - 如果nilfs_sectord_do_construct()在循环中失败,nilfs_sectord_abort_construction()将被调用,但NILFS_I_COLLECTED标志集上的正常inode将保持未清除。这可能导致数据和b-tree块未写入设备,破坏块映射。 2. 修复措施: - 通过在nilfs_sectord_do_construct()的每个步骤失败时,统一调用nilfs_sectord_abort_construction(),清理日志和段使用情况,确保NILFS_I_COLLECTED标志集被清除。 3. 补丁内容: - 修改了nilfs_sectord_abort_construction()和nilfs_sectord_do_construct()函数的实现,以确保在错误处理时正确清理日志和段使用情况。 4. 补丁链接: - 提供了补丁的链接,以便其他开发者可以查看和验证修复措施。 5. 补丁应用: - 补丁应用在commit 6576dd6695f2afca3f4954029ac4a64f82ba60ab中,这是从上游获取的补丁。 这些信息详细描述了漏洞的背景、问题、修复措施和补丁应用,有助于其他开发者理解和验证修复效果。