CVE-2026-43469Linux内核中的xprtrdma模块存在一个资源管理漏洞。当`rpcrdma_post_recvs()`函数因内存分配失败等原因提前退出时,未能正确递减`ep->re_receiving`计数器。这导致后续`rpcrdma_xprt_drain()`在等待资源释放时发生死锁,进而造成内核任务挂起,最终引发系统拒绝服务。
该漏洞位于Linux内核的RPC over RDMA (xprtrdma)传输驱动中。`rpcrdma_post_recvs()`函数负责发布接收工作请求,并在开始时增加`ep->re_receiving`计数。当函数执行过程中遇到错误(如`ib_post_recv`失败或内存分配失败)而进入早期退出路径时,代码遗漏了对`ep->re_receiving`的递减操作。在系统高负载或内存压力下,这会导致`ep->re_receiving`数值残留。当传输层尝试断开连接或执行清理操作时,`rpcrdma_xprt_drain()`会调用`wait_for_completion()`等待该计数器归零。由于计数器未被修正,等待条件永远无法满足,导致工作队列任务(如`xprt_autoclose`)处于不可中断的睡眠状态(D状态),造成系统相关服务永久挂起。