SEPTEMBER 13, 2026
Live Feed
Back to database
Case File

CVE-2026-89546

CRITICAL · CVSS 9.8 EPSS 0.52%

Source: NVD + CISA KEV + EPSS · Published 2026-09-11 · Last synced 2026-09-13

CyberRota Analysis

AI-Generated

The vulnerability affects the Linux kernel's SUNRPC implementation, specifically during the teardown of the NFS callback service, where a race condition can lead to requests being improperly handled. This can result in memory leaks and potential service disruptions, as requests may remain linked to a service that is in the process of being freed. Organizations using Linux systems that rely on NFS should prioritize addressing this issue to ensure the stability and security of their services.

CVE
CVE-2026-89546
Severity
CRITICAL
CVSS
9.8
EPSS
0.52%
Linux

Original NVD Description

In the Linux kernel, the following vulnerability has been resolved: SUNRPC: close backchannel before destroying callback service A backchannel receive can complete a request while the NFS callback service is being torn down. xprt_complete_bc_request() removes the request from bc_pa_list, drops bc_alloc_count, marks the request in use, and then asks xprt_enqueue_bc_request() to hand it to the callback service. If teardown has already cleared xprt->bc_serv, xprt_enqueue_bc_request() currently returns without enqueueing or freeing the committed request. The xprt_get() taken on entry is leaked as well. If the producer wins the race before bc_serv is cleared, it can also enqueue onto sv_cb_list after nfs_callback_down() has stopped the callback threads, leaving the request linked to a svc_serv that is about to be freed. Close the producer side before callback threads are stopped. Add xprt_svc_shutdown_bc() to clear xprt->bc_serv under bc_pa_lock, and call it on callback shutdown and callback-start failure before stopping the service threads. Requests that lose the NULL transition in xprt_enqueue_bc_request() are released through the normal backchannel free path after balancing bc_slot_count. Finally, drain any remaining sv_cb_list requests after the callback threads have stopped and before svc_destroy() frees the service.