从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题:在使用DAX(Direct Access)时,如果写入的块大小超过了inode的大小,可能会导致fsck失败。 - 原因:DAX_io_map_rw()函数在每个迭代中执行两项操作:映射已写入的块并复制用户数据到块。如果进程在写入过程中被用户信号中断,复制的数据将被返回并添加到inode大小中,导致写入的块大小可能超过inode大小。 2. 修复措施: - 解决方案:通过在写入过程中检查写入长度是否小于预期的inode大小,如果小于,则截断块。 - 代码修改: - 添加了一个新的函数 ,用于在DAX写入操作完成后清理inode。 - 修改了 函数,确保在写入操作完成后调用 。 3. 补丁提交信息: - 作者:Zhihao Cheng - 提交时间:2024年8月9日 - 补丁链接:https://bugzilla.kernel.org/show_bug.cgi?id=219136 - 修复的bug ID:219136 - 补丁状态:已签署并已接受 4. 补丁内容: - 文件修改: - 修改内容: - 添加了 函数。 - 修改了 函数,确保在写入操作完成后调用 。 这些信息表明,该漏洞是由于DAX写入操作在写入过程中被中断时,复制的数据被错误地添加到inode大小中,导致写入的块大小可能超过inode大小。修复措施是通过在写入过程中检查写入长度是否小于预期的inode大小,如果小于,则截断块,并在写入操作完成后调用新的 函数来清理inode。