从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题:io_uring在启动写入时,会调用kiocb_start_write()来增加超级块的rwsem,防止任何冻结在写入过程中发生。然而,io_uring在启动写入时会无条件地调用kiocb_start_write(),这会导致在写入过程中冻结的挂起任务无法完成,从而导致死锁。 - 影响:这会导致依赖于写入完成的挂起任务无法完成,从而导致系统挂起。 2. 修复措施: - 解决方案:修复了io_uring在启动写入时,会无条件地调用kiocb_start_write()的问题。现在,io_uring在启动写入时会检查IOCB_NOWAIT标志,如果未设置,则会尝试获取超级块的rwsem。对于正常情况,如果IOCB_NOWAIT总是设置,则会返回-EAGAIN,这将导致io_uring核心在写入时发出一个阻塞的写入请求。这将确保完成的完成,从而确保向前的进度。 3. 修复代码: - 代码变更:修复代码中添加了对IOCB_NOWAIT标志的检查,确保在启动写入时正确处理超级块的rwsem。 4. 修复范围: - 文件:修复代码位于 文件中。 - 行号:修复代码位于第3719行和第3784行。 5. 修复者: - 作者:Jens Axboe - 报告者:Peter Mann - 签署者:Jens Axboe和Sasha Levin 6. 相关链接: - 报告链接:https://lore.kernel.org/io-uring/38c94aec-81c9-4f62-b44e-1d87f5597644@sh.c - 原始报告:https://lore.kernel.org/io-uring/38c94aec-81c9-4f62-b44e-1d87f5597644@sh.c 这些信息可以帮助我们理解漏洞的背景、修复措施以及修复范围,从而更好地评估和处理类似的安全问题。