In the Linux kernel, the following vulnerability has been resolved: xfs: stop exchanging reflink flags when exchanging mappings When an…
CVE-2026-98975 · GHSA-pxhv-6mjw-34j3 · EUVD-2026-108769 · published 23 Oct 2026
How serious is it
- Severity: high, CVSS score 7.8 out of 10.
- No exploit prediction (EPSS) score yet.
- Not on the CISA list of exploited vulnerabilities.
- No public exploit in Exploit-DB.
Is your app affected by CVE-2026-98975?
Paste this prompt into Claude Code, Cursor or any AI coding tool: it runs a free Shippable scan of your project and fixes what it finds. Built with Lovable, Bolt or v0? Scan your live app. Or upload your package file.
Who is affected
- Linux Linux: f0bc4d134b46607967bda1205ce3226a1bd95f42 <7d3b9b2c9dc57f93f36c716ab752548cb4db9900
- Linux Linux: f0bc4d134b46607967bda1205ce3226a1bd95f42 <4756c94260e69ce42612b8220c3614f02f7a11d5
- Linux Linux: patch: 7.2.11
- Linux Linux: patch: 6.18.57
- Linux Linux: patch: 7.3
- Linux Linux: 4.9
- Linux Linux: f0bc4d134b46607967bda1205ce3226a1bd95f42 <1fa2f3a7ef7ee0f2503a4b0afe24bc8c9d0820be
- Linux Linux: patch: 0
- Linux Linux: f0bc4d134b46607967bda1205ce3226a1bd95f42 <d84d6c1a7f1e2de9e601703a326a4c1b7b421943
- Linux Linux: patch: 6.12.114
How to check
- Find out whether you run the affected product and which version, then compare it with the versions above.
How to fix
Copies a prompt for Claude Code, Cursor or Codex that asks it to check whether you run this product.
- Apply the vendor's update or mitigation from the references below. If there is none yet, limit exposure of the affected service until there is.
- If a vulnerable version was live, check your logs and rotate the secrets that server could read.
The advisory
In the Linux kernel, the following vulnerability has been resolved:
xfs: stop exchanging reflink flags when exchanging mappings
When an exchange covers both files from offset 0 to i_disk_size,
xmi_can_exchange_reflink_flags() assumes every mapping moved and hands
the reflink flag over to the other file.
That assumption is wrong. A file can still own shared blocks past
i_disk_size, e.g. after EXCHANGE_RANGE_TO_EOF sets a smaller size
without unmapping anything. The flag is cleared anyway, and the next
write to such a block happens in place instead of CoW, corrupting the
other file that shares it.
Commit a23eca88448e ("xfs: fix exchange-range reflink flag clearing
issue with INO1_WRITTEN") fixed one instance of this. Rather than add
another special case, stop moving the flags.
xfs_exchmaps_ensure_reflink() already sets the flag on both inodes
before the exchange, so both just keep it.
Nothing sets CLEAR_INO{1,2}_REFLINK anymore. Intents logged by older
kernels may still carry them; recovery already masks them off, so they
stay in the log format mask and are ignored.
XFS_IOC_SWAPEXT has the same problem: it moves the reflink flag from
one inode to the other along with the extents. Just removing that is
not enough here: the exchange path flags both inodes up front in
xfs_exchmaps_ensure_reflink(), but swapext has no such step, so the
inode receiving the shared extents would be left without the flag.
Set it on both inodes instead, and make sure both have a CoW fork,
since an inode with the reflink flag is expected to have one.
The flag now stays until FALLOC_FL_UNSHARE_RANGE, xfs_scrub, or a
truncate to zero removes it.
Check your whole app
Dependencies are only half of it. Free and read-only: before you push, run npx shippable-dev scan localhost:3000 in your project folder, no account needed. For your live app, you prove it's yours with a one-line tag first.
References
- git.kernel.org/stable/c/1fa2f3a7ef7ee0f2503a4b0afe24bc8c9d0820be
- git.kernel.org/stable/c/7d3b9b2c9dc57f93f36c716ab752548cb4db9900
- git.kernel.org/stable/c/4756c94260e69ce42612b8220c3614f02f7a11d5
- git.kernel.org/stable/c/d84d6c1a7f1e2de9e601703a326a4c1b7b421943
- nvd.nist.gov/vuln/detail/CVE-2026-98975
Merged from ENISA EUVD. Last updated 25 Oct 2026. All vulnerabilities · RSS · JSON