CVE-2026-22980CWE-362CWE-416

CVE-2026-22980

High · published January 23, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
1.8
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

nfsd: provide locking for v4_end_grace

Writing to v4_end_grace can race with server shutdown and result in

memory being accessed after it was freed - reclaim_str_hashtbl in

particularly.

We cannot hold nfsd_mutex across the nfsd4_end_grace() call as that is

held while client_tracking_op->init() is called and that can wait for

an upcall to nfsdcltrack which can write to v4_end_grace, resulting in a

deadlock.

nfsd4_end_grace() is also called by the landromat work queue and this

doesn't require locking as server shutdown will stop the work and wait

for it before freeing anything that nfsd4_end_grace() might access.

However, we must be sure that writing to v4_end_grace doesn't restart

the work item after shutdown has already waited for it. For this we

add a new flag protected with nn->client_lock. It is set only while it

is safe to make client tracking calls, and v4_end_grace only schedules

work while the flag is set with the spinlock held.

So this patch adds a nfsd_net field "client_tracking_active" which is

set as described. Another field "grace_end_forced", is set when

v4_end_grace is written. After this is set, and providing

client_tracking_active is set, the laundromat is scheduled.

This "grace_end_forced" field bypasses other checks for whether the

grace period has finished.

This resolves a race which can result in use-after-free.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00122 · 1.8th percentile
Weaknesses
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'); CWE-416 · Use After Free
Published
2026-01-23T21:15Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 3.18, < 5.10.2485.10.248
linux/linux_kernel≥ 5.11, < 5.15.1985.15.198
linux/linux_kernel≥ 5.16, < 6.1.1616.1.161
linux/linux_kernel≥ 6.2, < 6.6.1216.6.121
linux/linux_kernel≥ 6.7, < 6.12.666.12.66
linux/linux_kernel≥ 6.13, < 6.18.66.18.6
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (9)
EPSS history
Timeline
  • 23 JAN 15:24Z
    nfsd: provide locking for v4_end_grace
    cvelistv5