nvme:使保持活动同步操作(CVE-2024-53102)
CVE编号
CVE-2024-53102
利用情况
暂无
补丁情况
N/A
披露时间
2024-11-26
漏洞描述
在Linux内核中,已经解决了一个关于nvme的漏洞:让保持活动状态的操作同步执行。nvme的保持活动状态操作会在一个周期性间隔内执行,可能会在关闭织物控制器时偷偷溜进执行。这可能导致在织物控制器管理队列销毁代码路径(在关闭控制器时调用)和由nvme保持活动状态异步请求排队操作调用的hw/hctx队列调度程序之间发生竞争。这种竞争可能导致出现如下内核崩溃:调用跟踪:在关闭织物控制器时,如果nvme保持活动状态的请求偷偷溜进来,那么它将被清除。然后会调用nvme_keep_alive_end_io函数来处理保持活动状态操作的结束,该函数会减少admin->q_usage_counter的值。假设这是管理队列中的最后一个/唯一的请求,那么admin->q_usage_counter的值就会变为零。如果发生这种情况,那么可能同时在另一个CPU上运行的blk-mq销毁队列操作(blk_mq_destroy_queue())会向前推进并删除管理队列。因此,从这一点开始,我们不应该再访问管理队列的资源。然而,问题在于nvme的保持活动状态的线程正在运行hw/hctx队列调度操作,它可能仍然会访问已经被删除的管理队列资源,这导致了上面的崩溃。这个修复通过使保持活动状态操作成为同步操作,避免了观察到的崩溃。在我们减少admin->q_usage_counter的值之前,会等待保持活动状态命令完成执行并返回命令状态给其调用者(blk_execute_rq())。这将确保在保持活动状态请求完成执行并且保持活动状态的线程不再运行hw/hctx队列调度操作之前,织物关闭代码路径不会销毁织物管理队列。
解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
文章评论