CVE-2026-98684

smb: client: flush and commit data before querying allocated ranges

State
Published
Severity
Not scored
Published
Oct 18, 2026
Updated
Oct 19, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

smb: client: flush and commit data before querying allocated ranges

The mode 0 / FALLOC_FL_KEEP_SIZE fallocate emulation for small interior ranges in smb3_simple_fallocate_range() issues FSCTL_QUERY_ALLOCATED_RANGES and zero-fills any sub-range the server reports as an unallocated hole, to force block allocation without changing file contents.

This is unsafe against Windows servers. Per the Win32 documentation, FSCTL_QUERY_ALLOCATED_RANGES only reports ranges that *may* contain nonzero data and is explicitly not coherent with recently written data:

"a call to FSCTL_QUERY_ALLOCATED_RANGES [after writing to a network file] would not necessarily return a correct list of allocated regions. To ensure coherency [...] flush the data to the file"

fsx (generic/363) reproduces the resulting corruption against Windows Server 2022: a range is written, an uncached read returns the data, yet the next FSCTL_QUERY_ALLOCATED_RANGES on that range reports it as a whole hole, so the emulation overwrites live data with zeroes. A network trace confirmed the WRITE, the READ returning data and the query returning an empty range list within microseconds. Samba does not exhibit this; its query is coherent with the written data.

Write back the dirty pages, drain any outstanding I/O and issue an SMB2 FLUSH to force the server to commit the data before querying the allocated ranges, so the query reflects the data actually present.

With this, generic/363 passes against both Windows Server 2022 and Samba over 100000 fsx operations.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 966a3cb7c7db786452a87afdc3b48858fc4d4d6b to before f82242fe3109a3ef72f429540b5bdde08fbfb0e4Affected
  • 966a3cb7c7db786452a87afdc3b48858fc4d4d6b to before bf84e44ff0ed802778eafd7ecb623635379cb506Affected
  • 966a3cb7c7db786452a87afdc3b48858fc4d4d6b to before aa994489bd835547c191827acc460192e147032dAffected
  • c406bb9ece6ef63721daab106f132ff4b4234e81Affected
  • 2f9f4a2d0e6fcf0673ed51195e06e47abe966900Affected
  • 5e397c943424de94879830e72c95f2679e297a76Affected
  • 5.10.50 to before 5.11Affected
  • 5.12.17 to before 5.13Affected
  • 5.13.2 to before 5.14Affected
LinuxLinux
  • 5.14Affected
  • before 5.14Not affected
  • 6.18.56 through 6.18.*Not affected
  • 7.2.10 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.