From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-cve-announce@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@kernel.org>
Subject: CVE-2026-89713: NFSD: check truncate permission under inode lock
Date: Fri, 11 Sep 2026 21:46:42 +0200 [thread overview]
Message-ID: <2026091158-CVE-2026-89713-a846@gregkh> (raw)
From: Greg Kroah-Hartman <gregkh@kernel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
NFSD: check truncate permission under inode lock
nfsd_setattr() checks whether a size update needs NFSD_MAY_TRUNC
before it takes inode_lock(). The comparison uses the file size sampled
by that unlocked read, but the actual ATTR_SIZE update is applied later
under inode_lock() by notify_change().
This leaves a TOCTOU window for append-only files. If a client sends a
SETATTR that does not shrink the file at the time of the unlocked
sample, a concurrent append can extend the file before nfsd_setattr()
takes inode_lock(). notify_change() then applies a real truncation
without the NFSD_MAY_TRUNC check that rejects IS_APPEND(inode). The VFS
truncate syscall paths perform their own append-only checks before
calling notify_change(), so NFSD must make this decision against the
locked size it is about to change.
Split the write-count acquisition from the truncation permission check.
Keep get_write_access() before the locked setattr work, then recheck
whether the requested size is below i_size_read(inode) after inode_lock()
has been acquired and before notify_change(ATTR_SIZE). This also avoids
the plain unlocked inode->i_size load.
The Linux kernel CVE team has assigned CVE-2026-89713 to this issue.
Affected and fixed versions
===========================
Issue introduced in 4.11 with commit 783112f7401ff449d979530209b3f6c2594fdb4e and fixed in 6.12.109 with commit 3afa17d93ba8c925f49370c816c6dae5112d8c24
Issue introduced in 4.11 with commit 783112f7401ff449d979530209b3f6c2594fdb4e and fixed in 6.18.50 with commit d8352da196349182e1afd5a93308256cddc0a97d
Issue introduced in 4.11 with commit 783112f7401ff449d979530209b3f6c2594fdb4e and fixed in 7.2.4 with commit 44086254479035de42ca3d286ecf25521d4e6325
Issue introduced in 4.11 with commit 783112f7401ff449d979530209b3f6c2594fdb4e and fixed in 7.3-rc1 with commit b778e0e0a16759f22a70579c3cf8d254a40d4a7f
Issue introduced in 3.2.89 with commit 604a3c407026d6162d15300478e63f901e435efc
Issue introduced in 3.16.44 with commit cc4d5dc73841b98d33cdfb9822d70b0aac4beca5
Issue introduced in 4.4.53 with commit 3ee4f442e5b37a537297b812557b1163f96b5399
Issue introduced in 4.9.14 with commit a3c6cbc4eac4473ed5461d5faae2794d3e5c0e44
Issue introduced in 4.10.2 with commit 982898d7f97a35447403c3fcecc0d96c646ce101
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2026-89713
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
fs/nfsd/vfs.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/3afa17d93ba8c925f49370c816c6dae5112d8c24
https://git.kernel.org/stable/c/d8352da196349182e1afd5a93308256cddc0a97d
https://git.kernel.org/stable/c/44086254479035de42ca3d286ecf25521d4e6325
https://git.kernel.org/stable/c/b778e0e0a16759f22a70579c3cf8d254a40d4a7f
reply other threads:[~2026-09-11 20:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2026091158-CVE-2026-89713-a846@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=cve@kernel.org \
--cc=gregkh@kernel.org \
--cc=linux-cve-announce@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox