从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 作者在btrfs中发现了一个bug,该bug发生在vfs层。 - 问题发生在inode计数为1的inode被ioput()调用时,同时有另一个线程调用generic_shutdown_super()。 2. 问题原因: - 当inode计数为1时,ioput()会调用spin_lock(),然后递减计数到0。 - generic_shutdown_super()会调用__inode_add_lru(),然后检查inode是否满足某些条件。 - 如果满足条件,inode会被从sb列表和hash列表中删除,但I_FREEING 3. 修复方法: - 修复方法是在检查inode->i_state & I_CLEAR时,重新检查inode->i_count。 - 这样可以在最常见的情况下,避免在clear_inode()和ioput()中触发BUG(inode->i_state & I_CLEAR)。 4. 相关链接: - bug报告的链接:https://lore.kernel.org/linux-btrfs/000000000000eabe1d0619c48986@google.com/ - 修复补丁的链接:https://lore.kernel.org/r/20240823130730.658881-1-sunjunchao2870@gmail.com 5. 作者和审查者: - 作者是Julian Sun,联系邮箱是sunjunchao2870@gmail.com。 - 审查者包括Christian Brauner和Greg Kroah-Hartman。 6. 补丁内容: - 补丁文件位于 ,增加了对inode->i_count的检查。 这些信息可以帮助我们理解bug的背景、原因和修复方法,以及相关的联系信息和补丁内容。