CVE-2026-64064

CVE-2026-64064

Medium · published July 19, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
1.8
In the wild
Unconfirmed
What it is

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

netfs: Fix netfs_invalidate_folio() to clear dirty bit if all changes gone

If a streaming write is made, this will leave the relevant modified folio

in a not-uptodate, but dirty state with a netfs_folio struct hung off of

folio->private indicating the dirty range. Subsequently truncating the

file such that the dirty data in the folio is removed, but the first part

of the folio theoretically remains will cause the netfs_folio struct to be

discarded... but will leave the dirty flag set.

If the folio is then read via mmap(), netfs_read_folio() will see that the

page is dirty and jump to netfs_read_gaps() to fill in the missing bits.

netfs_read_gaps(), however, expects there to be a netfs_folio struct

present and can oops because truncate removed it.

Fix this by calling folio_cancel_dirty() in netfs_invalidate_folio() in the

event that all the dirty data in the folio is erased (as nfs does).

Also add some tracepoints to log modifications to a dirty page.

This can be reproduced with something like:

dd if=/dev/zero of=/xfstest.test/foo bs=1M count=1

umount /xfstest.test

mount /xfstest.test

xfs_io -c "w 0xbbbf 0xf96c" \

-c "truncate 0xbbbf" \

-c "mmap -r 0xb000 0x11000" \

-c "mr 0xb000 0x11000" \

/xfstest.test/foo

with fscaching disabled (otherwise streaming writes are suppressed) and a

change to netfs_perform_write() to disallow streaming writes if the fd is

open O_RDWR:

if (//(file->f_mode & FMODE_READ) || <--- comment this out

netfs_is_cache_enabled(ctx)) {

It should be reproducible even without this change, but if prevents the

above trivial xfs_io command from reproducing it.

Note that the initial dd is important: the file must start out sufficiently

large that the zero-point logic doesn't just clear the gaps because it

knows there's nothing in the file to read yet. Unmounting and mounting is

needed to clear the pagecache (there are other ways to do that that may

also work).

This was initially reproduced with the generic/522 xfstest on some patches

that remove the FMODE_READ restriction.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00122 · 1.8th percentile
Published
2026-07-19T20:17Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel≥ 6.8, < 6.12.926.12.92
linux/linux_kernel≥ 6.13, < 6.18.346.18.34
linux/linux_kernel≥ 6.19, < 7.0.117.0.11
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (4)
EPSS history
Timeline
  • 19 JUL 15:39Z
    netfs: Fix netfs_invalidate_folio() to clear dirty bit if all changes gone
    cvelistv5