从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 一个客户报告了一个崩溃和损坏的ocfs2文件系统。 - 这个崩溃是由于检测到的损坏引起的。 - 通过调试,发现fsck -fn输出显示了以下错误: 2. 问题原因: - 在reflink工作流程中,ocfs2_reflink_xattr_inline()函数在为inline xattr保留空间时出现问题。 - 函数在创建目标inode时,没有检查目标inode是否在根元数据块中。 - 函数简单地将l_count从243减到227,从而为256字节的inline xattr分配空间,而inode的扩展属性已经超过了这个索引(在这种情况下高达230),导致了损坏。 3. 修复措施: - 修复措施是在reflink流程之前为目标inode保留空间。 - 客户已经验证了修复措施。 4. 补丁内容: - 代码补丁包括对ocfs2_refcounttree.c和ocfs2/xattr.c文件的修改。 - 修改内容包括在ocfs2_reflink_xattr_inline()函数中添加检查,确保在为inline xattr保留空间之前检查目标inode是否在根元数据块中。 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的审查。 这些信息表明,这个漏洞是由于在为inline xattr保留空间时没有正确检查目标inode是否在根元数据块中而引起的,修复措施是在reflink流程之前为目标inode保留空间。