A kernel update released in late March 2025 fixes a race condition in the Linux mlx5 RDMA driver that can leave servers hung, storage I/O stalled, and high-performance computing jobs frozen. Microsoft’s Security Response Center published an advisory for CVE-2025-21892, flagging Azure Linux as potentially affected and signaling that the open‑source fix will flow into its distribution.
The flaw lives in the recovery path for User Memory Region (UMR) Queue Pairs (QPs) on Mellanox—now NVIDIA—mlx5 hardware. When a QP enters an error state, the driver must flush outstanding work requests and reset the QP. The bug allowed the reset to happen before every flushed completion event was accounted for, so a waiting thread could block indefinitely waiting on a completion that the firmware silently discarded. Administrators first spotted the problem via hung‑task warnings in kernel logs: “task rdma_resource_l blocked for more than 120 seconds.”
What Actually Changed
Upstream kernel commit addresses the race with a single, surgical change. Before moving a QP to the RESET state, the driver now posts a final barrier work request. It then waits for a completion queue event (CQE) for that request. Once the CQE arrives—typically with a flush‑error status—the driver knows the hardware has drained every pending work request. Only then does it transition the QP to RESET and, if needed, back to an active state. The fix adds roughly a dozen lines and touches no other subsystem.
Microsoft’s advisory confirms that Azure Linux inherits the affected driver code. The company states that it keeps Azure Linux current with upstream open‑source fixes and publishes CSAF/VEX advisories as part of its transparency commitment. No other Microsoft product is mentioned, and no other operating system—Windows uses a different networking stack—is vulnerable. The advisory also notes that if further impact is discovered, the CVE record will be updated.
What It Means for You
For most Windows desktop users, this issue is irrelevant. Windows doesn’t ship the mlx5 driver, and RDMA is typically a datacenter technology. But if your environment touches Linux in any of the following ways, the bug warrants attention.
IT professionals and system administrators in hybrid shops should inventory hosts that use mlx5‑based NICs—these are common in hyper‑converged infrastructure, bare‑metal Kubernetes nodes, storage appliances, and HPC clusters. A kernel hang on a storage host or a virtualisation node can cascade into application timeouts, VM pauses, and backup failures that your Windows‑centric monitoring may not immediately attribute to a Linux kernel defect. If you run Azure Linux VMs for RDMA‑intensive workloads (e.g., throughput‑optimised storage or machine‑learning training), you depend on Microsoft’s update cadence to receive the fix.
Power users and developers who dual‑boot Linux or work with RDMA for low‑latency experiments on mlx5 adapters should verify their kernel version. The bug is reproducible if you trigger UMR QP recovery—a code path that stressing memory‑region deregistration or network errors can exercise. A hang may manifest as a suddenly frozen application or an unresponsive SSH session that recovers only after a reboot.
Appliance and embedded‑system owners should contact their vendor for a patched firmware or kernel image. Many storage and networking appliances bundle the Linux kernel with an mlx5 driver, and vendor release cycles often lag upstream fixes. Do not assume an appliance is patched just because the upstream commit exists.
How We Got Here
The mlx5 driver is the Linux kernel’s gateway to Mellanox/NVIDIA Connect‑X adapters, which dominate high‑performance networking. RDMA operations rely on Queue Pairs—send and receive queues that hardware processes asynchronously. When a QP encounters an error, the driver declares a software error state, flushes pending work requests, and moves the QP through SQError to RESET so it can be reused. The InfiniBand specification permits hardware to discard flushed completion events upon RESET, so kernel code must guarantee every completion event is consumed before that transition.
A timing hole opened because the driver signaled the RESET transition without a hard synchronisation point. Firmware could have produced the final flushed completions but not yet delivered them, or it could have scheduled the QP reset before the completion queue had been drained. The result was a classic lost‑wakeup: a kernel thread slept waiting for a CQE that never arrived, triggering the infamous 120‑second hung‑task detector.
This bug simmered since at least the 6.x kernel series. It disproportionately affects environments that stress UMR operations—memory registration/deregistration is a fast path for RDMA transfers, so nodes handling storage traffic or dynamic memory regions hit it more often. The fix, posted by a Mellanox/NVIDIA engineer, was merged into Linus Torvalds’ tree on 27 March 2025 and immediately designated CVE-2025-21892. Distribution kernels began backporting it within days.
What to Do Now
- Inventory affected systems. Scan for mlx5 adapters with
lspci | grep Mellanox(orgrep NVIDIAon newer cards) on any Linux host—physical, virtual, or appliance. On Azure, check if your VM size uses RDMA‑capable networking (Standard_H16r, Standard_HC44rs, etc.). - Verify patch status. For standard Linux distributions, check the changelog for the kernel package or search the CVE number. For Azure Linux, watch the Microsoft Security Update Guide and the Azure Linux package repository. Microsoft’s advisory will link to the specific updated kernel version once it ships.
- Apply the update. The fix is tiny and low‑risk, but updating a kernel requires a reboot. Schedule a maintenance window and test in a staging environment first. If you cannot patch immediately, limit administrative operations that trigger QP resets (e.g., avoid dynamic memory deregistration, isolate untrusted tenants from RDMA hardware). Blacklisting the mlx5 module is a last resort—it disables the NIC entirely.
- Adjust monitoring. Add kernel‑log scraping for “blocked for more than 120 seconds” and mlx5‑related stack traces (mlx5r_umr_post_send_wait, __mlx5_ib_dereg_mr) to your existing alerting. A patched system should never hit these, but catching a regression early is cheap.
- Validate appliance firmware. Open a ticket with your vendor, reference CVE-2025-21892, and request a timeline for a patched image. Do not defer this—the fix is well‑understood, and vendors should have backport plans ready.
Outlook
The fix is a model of kernel surgery: minimal, verifiable, and robust. It does not alter hardware behaviour, so the underlying InfiniBand quirk—firmware can discard CQEs on RESET—remains. That means the driver must continue to enforce synchronisation points correctly. While no other race of this exact pattern is known, the RDMA subsystem is complex, and operators should stay current with stable kernel updates.
Microsoft’s advisory for Azure Linux is a reminder that even Windows‑centric organisations now rely on open‑source components running in the cloud. Tracking Linux CVEs that affect infrastructure services has become a standard part of hybrid operations. This bug won’t make headlines, but left unpatched, it can cause precisely the kind of low‑level hang that turns a routine maintenance window into a full‑blown outage. Patch it, test it, and move on.