从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题:在使用DAX(Direct Access)时,如果写入的块大小超过了inode的大小,可能会导致fsck失败。 - 原因:DAX_io_map_rw()函数在每个迭代中执行两项操作:映射已写入的块并复制用户数据到块。如果进程在写入过程中被用户信号中断,复制的数据将被返回并添加到inode大小中,导致写入的块大小可能超过inode大小。 2. 修复措施: - 解决方案:通过在写入过程中检查写入长度是否小于预期的inode大小,如果小于,则截断块。 - 代码修改: - 添加了一个新的函数 ,用于在DAX写入操作完成后清理inode。 - 修改了 函数,确保在写入操作完成后调用 。 3. 补丁细节: - 补丁位置:在 文件中。 - 补丁内容:添加了新的函数调用和条件判断,以确保在写入操作完成后正确处理inode。 4. 补丁状态: - 状态:已提交到内核代码库。 - 作者:Zhihao Cheng。 - 审查:由Jan Kara、Zhihao Cheng、Theodore Ts'o和Greg Kroah-Hartman审查。 5. 相关链接: - Bugzilla链接:用于跟踪和讨论此问题的Bugzilla链接。 - 代码链接:原始代码和修改后的代码链接。 这些信息表明,该漏洞与DAX写入操作有关,通过在写入过程中检查和处理inode大小,可以防止fsck失败。