CVE-2026-31400: sunrpc: fix cache_request leak in cache_release
In the Linux kernel, the following vulnerability has been resolved:
sunrpc: fix cacherequest leak in cacherelease
When a reader's file descriptor is closed while in the middle of reading a cacherequest (rp->offset != 0), cacherelease() decrements the request's readers count but never checks whether it should free the request.
In cacheread(), when readers drops to 0 and CACHEPENDING is clear, the cacherequest is removed from the queue and freed along with its buffer and cachehead reference. cacherelease() lacks this cleanup.
The only other path that frees requests with readers == 0 is cachedequeue(), but it runs only when CACHEPENDING transitions from set to clear. If that transition already happened while readers was still non-zero, cachedequeue() will have skipped the request, and no subsequent call will clean it up.
Add the same cleanup logic from cacheread() to cacherelease(): after decrementing readers, check if it reached 0 with CACHEPENDING clear, and if so, dequeue and free the cacherequest.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-31400?
CVE-2026-31400 is classified as a medium severity vulnerability due to the potential for resource leaks.
How do I fix CVE-2026-31400?
To fix CVE-2026-31400, users should update their Linux kernel to the patched version recommended by the Linux kernel maintainers.
What impact does CVE-2026-31400 have on affected systems?
CVE-2026-31400 could lead to resource leaks which may degrade system performance over time.
Who is affected by CVE-2026-31400?
CVE-2026-31400 affects systems running specific versions of the Linux kernel implementing the sunrpc mechanism.
Is CVE-2026-31400 exploit possible?
While CVE-2026-31400 involves a resource leak, it does not provide a straightforward exploit path for attackers.