# CVE-2026-99111: smb: client: fix data corruption with concurrent writes and O_TRUNC


- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Fix available:** Yes
- **Published:** 28 Oct 2026
- **Updated:** 28 Oct 2026
- **Also known as:** BELL-CVE-2026-99111, DEBIAN-CVE-2026-99111, GHSA-2cjv-j4m8-25m8, UBUNTU-CVE-2026-99111

## What is CVE-2026-99111?

CVE-2026-99111 is a vulnerability in Linux, published on 28 Oct 2026. 

### Official description

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

smb: client: fix data corruption with concurrent writes and O_TRUNC

cifs_do_truncate() flushes dirty pages with filemap_write_and_wait()
and truncates the file on the server, but in the old code both
operations ran without holding i_rwsem or invalidate_lock.  A
concurrent buffered write via netfs_perform_write() -- which only
needs i_rwsem shared -- could dirty new pages after the flush but
before the local truncation, and those pages would be silently
discarded by cifs_setsize() -> truncate_pagecache().

Fix by acquiring inode_lock (exclusive i_rwsem) and
filemap_invalidate_lock at the top of cifs_do_truncate(), so the
entire flush-truncate-resize sequence is atomic with respect to:

  - buffered writes (blocked by exclusive i_rwsem, since
    netfs_start_io_write takes i_rwsem shared),
  - read page faults (blocked by exclusive invalidate_lock, since
    filemap_fault takes it shared),
  - writeback collection (blocked by netfs_wb_begin/netfs_wb_end
    around the server truncate and local resize, since
    netfs_writepages also acquires the wb lock).

## Which versions are affected by CVE-2026-99111?


## How do I fix CVE-2026-99111?

Upgrade to a fixed version.

## Is CVE-2026-99111 being exploited?

There is no known exploitation of CVE-2026-99111 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-99111 and fix it if it is affected.

What it is: CVE-2026-99111 is a vulnerability in Linux, published on 28 Oct 2026. 
Exploitation: There is no known exploitation of CVE-2026-99111 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-99111/ (Markdown: https://insights.sbomify.com/CVE-2026-99111/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-99111
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-99111
- OSV: https://osv.dev/vulnerability/CVE-2026-99111

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-99111/
Summaries are generated and may contain mistakes; the official description above is the record.
