CVE Catalog

CVE-2026-89798

Low risk· EPSS 10%
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.20%

10th percentile - higher than 10% of all known CVEs

Summary

In the Linux kernel, rpcrdma_rn_register() inserts @rn into rd_xa via xa_alloc() before storing the caller's callback in rn->rn_done. A device removal racing a fresh registration can observe @rn with rn_done still NULL and call through a NULL function pointer. The fix stores rn->rn_done before xa_alloc() and clears it on allocation failure.

Risk Assessment

A kernel crash (null pointer dereference) may occur during RDMA device removal racing with notification registration. In the failed-registration scenario, an unrelated rd_xa slot may be erased and rd_kref underflowed.

Recommendation

Update the Linux kernel to a version containing the fix for the ordering of rn_done store relative to xa_alloc(). Avoid concurrent RDMA device removal and notification registration until patched.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: rpcrdma: arm rn_done before publishing the notification rpcrdma_rn_register() inserts @rn into rd_xa with xa_alloc() before storing the caller's callback in rn->rn_done. The xarray makes @rn reachable to rpcrdma_remove_one(), which walks rd_xa and invokes rn->rn_done(rn) for every registered notification. A device removal that races a fresh registration can therefore observe @rn with rn_done still NULL, because the notification objects are zero allocated by their owners, and call through a NULL function pointer. Store rn->rn_done before xa_alloc() publishes @rn. The xarray's store-side and load-side ordering then guarantees that any CPU which finds @rn in rd_xa also observes the armed callback. rpcrdma_rn_unregister() treats a non-NULL rn_done as the sentinel for a completed registration, so the early store must not survive a failed registration. Clear rn_done again when xa_alloc() fails. Were it left set, the failed-accept cleanup path would call rpcrdma_rn_unregister() on an @rn that was never inserted, erasing an unrelated rd_xa slot and underflowing rd_kref.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS