nfsd: restore rq_status_counter to even on all nfsd_dispatch() exit paths
CVE-2026-89705 · published 11 Sept 2026
How serious is it
- Severity: high, CVSS score 7.1 out of 10.
- No exploit prediction (EPSS) score yet.
- Not on the CISA list of exploited vulnerabilities.
- No public exploit in Exploit-DB.
Is your app affected by CVE-2026-89705?
Paste this prompt into Claude Code, Cursor or any AI coding tool: it runs a free Shippable scan of your project and fixes what it finds. Built with Lovable, Bolt or v0? Scan your live app. Or upload your package file.
Who is affected
- Linux Linux: bd9d6a3efa9709e653aafbeb859289feccb8e70c to < 5773e00cc0f9e34983bd29ba2a607c6b14258e00, bd9d6a3efa9709e653aafbeb859289feccb8e70c to < df5500ab85df661d9e4439e4c456787181fbd5ff, bd9d6a3efa9709e653aafbeb859289feccb8e70c to < b08c30f08d57f30699d36809d92f0b683dca261f, bd9d6a3efa9709e653aafbeb859289feccb8e70c to < f6045886fe3f14f269f683d64021b004a50d0efa
- Linux Linux: 6.7
How to check
- Find out whether you run the affected product and which version, then compare it with the versions above.
How to fix
Copies a prompt for Claude Code, Cursor or Codex that asks it to check whether you run this product.
- Apply the vendor's update or mitigation from the references below. If there is none yet, limit exposure of the affected service until there is.
- If a vulnerable version was live, check your logs and rotate the secrets that server could read.
The advisory
In the Linux kernel, the following vulnerability has been resolved:
nfsd: restore rq_status_counter to even on all nfsd_dispatch() exit paths
nfsd_dispatch() sets rq_status_counter to an odd value once a request has
been decoded, and back to an even value once it has been fully processed,
forming a seq-lock like protocol with the lockless reader in
nfsd_nl_rpc_status_get_dumpit().
Only the fully successful path restored the counter to even. The cache-hit
(RC_REPLY), drop (RC_DROPIT / RQ_DROPME) and encode-error paths all return
after the odd-valued store without ever bringing the counter back to even.
Once one of those paths is taken, rq_status_counter is left odd: the next
request's decode ORs in 1 (still odd) and only a subsequent successful
encode restores even. While stuck odd, the dumpit reader treats the rqstp
fields as stable and its retry check compares against the same unchanging
odd value, so it never detects concurrent mutation. This exposes actively
mutating fields (e.g. args->ops / args->opcnt during compound decode and
release) to the lockless reader, which can read past the end of the
8-element inline ops array.
Add a helper that advances the counter to the next even value and call it
on every return path that follows the odd-valued store. The decode-error
path is left untouched as it is reached before the counter is set odd.
Check your whole app
Dependencies are only half of it. Free and read-only: before you push, run npx shippable-dev scan localhost:3000 in your project folder, no account needed. For your live app, you prove it's yours with a one-line tag first.
References
- git.kernel.org/stable/c/5773e00cc0f9e34983bd29ba2a607c6b14258e00
- git.kernel.org/stable/c/df5500ab85df661d9e4439e4c456787181fbd5ff
- git.kernel.org/stable/c/b08c30f08d57f30699d36809d92f0b683dca261f
- git.kernel.org/stable/c/f6045886fe3f14f269f683d64021b004a50d0efa
Merged from CVE List. Last updated 26 Oct 2026. All vulnerabilities · RSS · JSON