从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 问题描述: - 一个客户报告了一个crash和一个损坏的ocfs2文件系统。 - 系统崩溃是由于检测到的corruption。 - fsck -fn输出显示了以下corruption: 2. 问题原因: - 在reflink工作流程中为inline xattr保留空间时出现问题。 - 问题函数是ocfs2_reflink_xattr_inline()。 - 该函数在reflink树已经重建到源inode时调用,此时函数为dest inode保留空间,但没有检查dest inode的root metadata block是否有空间。 - 这导致l_count从243减少到227,从而为inline xattr分配了超过256字节的空间,导致corruption。 3. 修复措施: - 修复措施是在reflink树重建之前为dest inode保留空间。 - 客户已经验证了修复。 4. 补丁内容: - 代码补丁包括对ocfs2_reflinktree.c和ocfs2/xattr.c文件的修改。 - 修改了ocfs2_reflink_xattr_inline()函数,确保在为inline xattr保留空间之前检查dest inode的root metadata block是否有空间。 5. 补丁链接: - 修复补丁的链接:https://lkml.kernel.org/r/20240918063844.1830332-1-gautham.ananthakrishna@oracle.com 6. 补丁状态: - 该补丁已经通过了Gautham Ananthakrishna的审查,并且已经由Joseph Qi和Andrew Morton签署。 这些信息表明,该漏洞是由于在为inline xattr保留空间时没有正确检查dest inode的root metadata block是否有空间而引起的。修复措施是在reflink树重建之前为dest inode保留空间,以避免过度分配空间并导致corruption。