CVE-2026-31492Linux内核的RDMA/irdma驱动程序中存在一处因初始化顺序错误导致的漏洞。在创建队列对(QP)时,若向用户空间复制数据的操作失败,将触发资源清理逻辑。由于清理函数试图等待一个尚未初始化的完成量,导致内核发生空指针解引用。本地低权限攻击者可利用此缺陷引发系统崩溃,造成拒绝服务。
该漏洞技术根源在于Linux内核irdma驱动中资源初始化与错误处理的逻辑顺序错误。具体来说,在`irdma_create_qp`函数执行期间,代码首先尝试通过`ib_copy_to_udata`将QP相关信息复制到用户空间。如果该操作失败,例如用户提供的缓冲区无效,程序将跳转到错误处理路径,调用`irdma_destroy_qp`来释放已分配的资源。问题的关键在于,`irdma_destroy_qp`内部调用了`wait_for_completion(&qp->free_qp)`以等待资源释放完成,但`init_completion(&qp->free_qp)`初始化操作却被错误地安排在`ib_copy_to_udata`调用之后。这意味着当复制操作失败时,销毁流程试图访问并等待一个尚未初始化的完成量结构。这种未初始化的访问会导致内核空指针解引用或死锁,进而触发Kernel Panic,使系统崩溃。