CVE-2026-98682

CVE-2026-98682

published October 18, 2026

CVSS
—
EPSS
0%
Percentile
4.3
In the wild
Unconfirmed
What it is

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

smb: client: drain and invalidate before server-side copy/clone

cifs_file_copychunk_range() and the clone (FICLONE) path of

cifs_remap_file_range() do not serialise the destination page cache

against the server-side copy the way the other server-side range

operations (smb3_zero_range(), smb3_punch_hole(), smb3_collapse_range()

and smb3_insert_range()) do.

cifs_file_copychunk_range() invalidates the destination range with

filemap_invalidate_inode(), which takes and drops the mapping's

invalidate_lock internally, so the lock is no longer held when the

copychunk ioctl is issued. It also never drains in-flight netfs I/O on

the target. The clone path never takes the invalidate_lock at all (only

i_rwsem), uses a bare truncate_inode_pages_range() and likewise does not

drain outstanding I/O.

As a result an asynchronous destination writeback can complete after the

server-side copy/clone has run and reinstate stale data over the region

just written by the server, corrupting the file. This is the same class

of corruption as commit d7d2adcd022b ("smb/client: flush dirty data

before punching a hole") and has been seen randomly in generic/363

against Windows Server.

Fix both paths to follow the established ordering: hold the target

mapping's invalidate_lock across the flush and invalidation of the

destination and the server ioctl, and call netfs_wait_for_outstanding_io()

on the target to drain in-flight writes before the ioctl is issued. Only

the target inode's invalidate_lock is required, as the source is merely

flushed and not invalidated; i_rwsem (already held via

lock_two_nondirectories()) is acquired before the invalidate_lock,

matching the VFS lock ordering. Since filemap_invalidate_inode() takes

that same lock internally, replace it with its own unmap/flush/invalidate

steps instead of calling it, and return early on a zero-length copy to

avoid a range underflow.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00155 · 4.3th percentile
Published
2026-10-18T20:17Z
References (2)
EPSS history
Timeline
  • 20 OCT 03:34Z
    EPSS moved — → 0%
    epss
  • 18 OCT 15:45Z
    smb: client: drain and invalidate before server-side copy/clone
    cvelistv5
  • 18 OCT 15:45Z
    smb: client: drain and invalidate before server-side copy/clone
    cvelistv5