CVE-2026-89688

CVE-2026-89688

Critical · published September 12, 2026

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

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

nfsd: drop the stateid, not the stateowner, on seqid_op replay retry

In nfs4_preprocess_seqid_op() the stateid is obtained from

nfsd4_lookup_stateid(), which holds a reference on the nfs4_stid

(sc_count) but takes no reference on the stateowner. openlockstateid()

merely casts that stid and likewise takes no reference.

When nfsd4_cstate_assign_replay() returns -EAGAIN (the replay owner is

being torn down, RP_UNHASHED) it has not taken a stateowner reference on

that path. The error handling nevertheless called

nfs4_put_stateowner(stp->st_stateowner), dropping an so_count reference

the function never acquired -- risking a stateowner refcount underflow and

use-after-free -- while leaking the sc_count reference held on the stid.

The leaked stid reference can also stall a concurrent

nfsd4_close_open_stateid() waiting for sc_count to drop.

Drop the reference actually held -- the stid -- before retrying. The

stateowner stays alive through the reference held by the stid. This mirrors

the open path in nfsd4_process_open1(), where the put balances a reference

that path explicitly holds on the stateowner.

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.00736 · 53.9th percentile
Published
2026-09-12T00:19Z
References (4)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:46Z
    nfsd: drop the stateid, not the stateowner, on seqid_op replay retry
    cvelistv5