从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题描述:nvme keep-alive operation(NVMe保持活动操作)在执行期间可能会在关闭Fabric控制器时“潜入”,导致Fabric控制器admin queue(管理队列)和hw/hctx queue dispatcher(硬件/上下文队列调度器)之间的竞争。 - 潜在影响:这种竞争可能导致Fabric控制器admin queue被删除,从而导致kernel crash(内核崩溃)。 2. 修复措施: - 解决方案:通过将keep-alive操作作为同步操作来实现,即在keep-alive操作完成后再减小admin->q_usage_counter(管理队列使用计数器)。 - 具体实现: - 在nvme_keep_alive_end_io函数中,确保在keep-alive操作完成后再减小admin->q_usage_counter。 - 在nvme_keep_alive_finish函数中,确保在keep-alive操作完成后再执行相关操作。 3. 代码变更: - 文件:drivers/nvme/host/core.c - 变更内容: - 添加了nvme_keep_alive_finish函数。 - 修改了nvme_keep_alive_end_io函数,确保在keep-alive操作完成后再减小admin->q_usage_counter。 4. 审查和签署: - 审查者:Christoph Hellwig - 签署者:Nilay Shroff和Keith Busch 这些信息表明,该漏洞涉及到NVMe保持活动操作在关闭Fabric控制器时的潜在问题,通过同步操作和适当的代码修改来解决这个问题。