从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 一个客户报告了一个crash和ocfs2文件系统的损坏。 - 这个crash是由于检测到损坏引起的。 - 通过调试,发现fsck -fn输出显示了以下错误: 2. 问题原因: - 在reflink工作流程中,当为inline xattr保留空间时出现问题。 - 问题函数是ocfs2_reflink_xattr_inline()。 - 在这个函数被调用时,reflink树已经在目标inode中重建,而没有检查目标inode是否在根元数据块中。 - 函数简单地将l_count从243减到227,从而为inline xattr分配了256字节的空间,而inode已经扩展到超过这个索引(在这种情况下高达230),导致损坏。 3. 修复措施: - 修复措施是在reflink流程之前为目标inode保留空间。 - 客户已经验证了修复。 4. 补丁内容: - 两个文件(ocfs2/refcounttree.c和ocfs2/xattr.c)的补丁代码。 - 补丁代码包括调整extent记录计数以保留空间的逻辑。 5. 补丁链接: - 修复补丁的链接:https://lkml.kernel.org/r/20240918063844.1830332-1-gautham.ananthakrishna@oracle.com 6. 补丁状态: - 该补丁已经通过了几个审查者的审查,包括Gautham Ananthakrishna、Joseph Qi、Mark Fasheh、Joel Becker、Junxiao Bi、Changwei Ge、Gang He、Jun Piao、Andrew Morton和Greg Kroah-Hartman。 这些信息表明,这个漏洞是由于在reflink流程中未正确处理inode扩展导致的,修复措施是调整extent记录计数以保留空间。