从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题描述:nilfs2在处理目录项查找时,当nilfs_get_folio()失败时,忽略错误并继续查找下一个目录项,导致在某些情况下可能会出现错误消息的溢出。 - 影响:在nilfs_find_entry()函数中,如果目录项的大小大于0,并且目录项页/目录项页成功读取但未通过安全性检查(例如,当它被零填充时),nilfs_check_folio()可能会继续输出错误消息。 2. 修复措施: - 解决方案:通过在nilfs_find_entry()中传播错误给调用者,当加载目录项页/目录项页失败时,可以解决这个问题。 - 代码变更:代码中添加了错误传播的逻辑,确保在错误发生时,调用者可以接收到错误信息。 3. 代码变更详情: - 文件:nilfs2/dir.c、nilfs2/namei.c、nilfs2/nifs.h - 变更内容:在nilfs_find_entry()函数中,添加了错误传播的逻辑,当加载目录项页/目录项页失败时,返回错误代码。 4. 修复过程: - 报告:Syzbot报告了这个问题,并指出在vcs_open()函数中进行模糊测试时,nilfs2会出现任务挂起的情况。 - 修复:通过在nilfs_find_entry()中传播错误,解决了这个问题。 - 验证:修复后的代码通过了Syzbot的验证。 5. 相关链接: - 原始报告:https://lkml.kernel.org/r/20241004033640.6841-1-konishi.ryusuke@gmail.com - 修复代码:https://github.com/linux/kernel/git/stable/linux.git/commit/08cfa12adf888db98879dbd735bc741360a34168 这些信息表明,这个漏洞是由于nilfs2在处理目录项查找时的错误处理不当导致的,修复措施是通过在nilfs_find_entry()中传播错误来解决这个问题。