CVE-2026-89678

CVE-2026-89678

High · published September 12, 2026

CVSS v3.1
7.5
EPSS
0%
Percentile
30.8
In the wild
Unconfirmed
What it is

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

nfsd: fix partial-write detection in nfsd_direct_write

nfsd_direct_write() walks a list of write segments and, after each

vfs_iocb_iter_write(), tries to detect a short write so the loop can

stop before placing the next segment at a wrong file offset:

host_err = vfs_iocb_iter_write(file, kiocb, &segments[i].iter);

if (host_err < 0)

return host_err;

*cnt += host_err;

if (host_err < segments[i].iter.count)

break; /* partial write */

vfs_iocb_iter_write() runs the iter through ->write_iter(), which

advances the iter by the number of bytes written. By the time the

check runs, segments[i].iter.count is the residual, not the original

request length:

before write_iter: iter.count == original_len

after write_iter: iter.count == original_len - host_err

The condition then reduces to host_err < original_len - host_err, so

the break fires only when less than half of the segment was written.

Any short write completing between 50% and 99% of the segment slips

through; the loop advances to the next segment with kiocb->ki_pos

only bumped by the short amount, writing the next segment's payload

at the wrong offset and over-reporting *cnt to the NFS client.

Snapshot the segment's byte count before the write and compare

host_err against that snapshot so any short write breaks the loop.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
CVSS v4.0
Not supplied
EPSS
0.00380 · 30.8th percentile
Published
2026-09-12T00:19Z
References (2)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:46Z
    nfsd: fix partial-write detection in nfsd_direct_write
    cvelistv5