CVE-2026-53399CWE-416CWE-476

CVE-2026-53399

Critical · published July 19, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
44.8
In the wild
Unconfirmed
What it is

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

nfsd: release layout stid on setlease failure

nfs4_alloc_stid() publishes the new stid into cl->cl_stateids via

idr_alloc_cyclic() under cl_lock before returning to

nfsd4_alloc_layout_stateid(). When nfsd4_layout_setlease() then

fails, the error path frees the layout stateid directly with

kmem_cache_free() without ever calling idr_remove(), leaving the

IDR slot pointing at freed slab memory. Any subsequent IDR walker

(states_show, client teardown) dereferences the dangling pointer.

The correct teardown for an IDR-published stid is nfs4_put_stid(),

which removes the IDR slot under cl_lock, dispatches sc_free

(nfsd4_free_layout_stateid) to release ls->ls_file via

nfsd4_close_layout(), and drops the nfs4_file reference in its

tail.

A second issue blocks that switch: nfsd4_free_layout_stateid()

unconditionally inspects ls->ls_fence_work via

delayed_work_pending() under ls_lock, but

INIT_DELAYED_WORK(&ls->ls_fence_work, ...) currently runs only

after the setlease call. On the setlease-failure path the

destructor would touch an uninitialized delayed_work.

nfsd4_alloc_layout_stateid()

nfs4_alloc_stid() /* idr_alloc_cyclic under cl_lock */

nfsd4_layout_setlease() /* fails */

nfs4_put_stid()

nfsd4_free_layout_stateid()

delayed_work_pending(&ls->ls_fence_work) /* needs INIT */

nfsd4_close_layout() /* nfsd_file_put(ls->ls_file) */

put_nfs4_file()

Fix by hoisting the ls_fenced / ls_fence_delay / INIT_DELAYED_WORK

initialization above the nfsd4_layout_setlease() call, and replace

the manual nfsd_file_put + put_nfs4_file + kmem_cache_free cleanup

with a single nfs4_put_stid(stp).

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00543 · 44.8th percentile
Weaknesses
CWE-416 · Use After Free; CWE-476 · NULL Pointer Dereference
Published
2026-07-19T16:16Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel≥ 4.0, < 5.10.2615.10.261
linux/linux_kernel≥ 5.11, < 5.15.2125.15.212
linux/linux_kernel≥ 5.16, < 6.1.1786.1.178
linux/linux_kernel≥ 6.2, < 6.6.1456.6.145
linux/linux_kernel≥ 6.7, < 6.12.966.12.96
linux/linux_kernel≥ 6.13, < 6.18.396.18.39
linux/linux_kernel≥ 6.19, < 7.1.37.1.3
References (8)
EPSS history
Timeline
  • 19 JUL 12:02Z
    nfsd: release layout stid on setlease failure
    cvelistv5