{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "1d57628ff95b32d5cfa8d8f50e07690c161e9cf0"
            },
            {
              "fixed": "b4bf8af5e7d7db4c5e179e15017da55857761ac4"
            },
            {
              "fixed": "90c990a68460d7b5720e5634cf650eccdf0f4098"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Linux",
        "name": "Kernel"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "6.18.0"
            },
            {
              "fixed": "7.2.6"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93201.json"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\ndm-pcache: validate seg_id fields from persistent memory\n\ncache_pos_decode(), cache_key_decode() and the last-kset branches of\ncache_replay(), the writeback worker and the GC worker take a cache\nsegment id from the cache device metadata and index cache-\u003esegments[]\nwith it without checking it against cache-\u003en_segs. That metadata is only\nCRC-protected with a fixed public seed, so whoever supplies the cache\ndevice on a table load (CAP_SYS_ADMIN) controls the id; an out-of-range\nvalue forms a wild pcache_cache_segment pointer that is dereferenced and\nwritten through -- an out-of-bounds read and write driven by on-disk data.\n\nAdd cache_seg_id_valid() and reject an out-of-range id at each decode\nsite, failing the operation with -EIO instead of indexing past the array.\nBound the id against the initialized-segment count (cache_info.n_segs)\nrather than the physical device total. A forged cache_info.n_segs below\nseg_num otherwise leaves segments[cache_info.n_segs..seg_num) as zeroed\nstructs whose data pointer is NULL, so a forged id in that window would\nstill be dereferenced. A later patch guarantees cache_info.n_segs \u003c=\nseg_num, and a driver-created cache sets the two equal, so valid images\nare unaffected.",
  "id": "CVE-2026-93201",
  "modified": "2026-09-18T03:30:26.081855167Z",
  "published": "2026-09-17T16:12:22.392Z",
  "references": [
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/90c990a68460d7b5720e5634cf650eccdf0f4098"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/b4bf8af5e7d7db4c5e179e15017da55857761ac4"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93201.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-93201"
    }
  ],
  "schema_version": "1.9.0",
  "summary": "dm-pcache: validate seg_id fields from persistent memory"
}