UBUNTU-CVE-2026-98352: Medium severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: RDMA/rtrs-clt: Fix CQ pool leak when connect is interrupted The client borrows shared CQ credits in the ADDRRESOLVED handler via ibcqpoolget(), before the peer is connected. createcm() can return -ERESTARTSYS from waiteventinterruptibletimeout() without destroying the CM ID. The initconns() and stop-and-destroy paths then call destroyconcqqp() while cq is still NULL (no PUT) and only afterwards rdmadestroyid(). CMA serializes the handler against rdmadestroyid() with handlermutex, but that does not order the GET against destroyconcqqp(). If ADDRRESOLVED has already passed the DESTROYING check, it can take conmutex, GET credits, and then lose the con to kfree. Device unregister later hits WARNON(cq->cqeused) in ibcqpoolcleanup(). Set a per-connection flag under conmutex before CQ/QP teardown so a racing ADDRRESOLVED cannot borrow credits after teardown has begun.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
Set a per-connection teardown flag under con_mutex before CQ/QP teardown begins, and have the ADDR_RESOLVED handler check this state before borrowing shared CQ credits with ib_cq_pool_get(). Ensure init_conns() and stop-and-destroy paths call destroy_con_cq_qp() while cq is still NULL, avoiding a PUT, and only then call rdma_destroy_id().
- Operational
When create_cm() returns -ERESTARTSYS from wait_event_interruptible_timeout(), destroy the CM ID before returning.