dm-pcache: validate kset key_num and intra-segment bounds
In the Linux kernel, the following vulnerability has been resolved: dm-pcache: validate kset key_num and intra-segment bounds Two more fields decoded from the cache device go unbounded. The kset key_num drives cache_kset_crc() and the replay loop in cache_replay(), the writeback worker and the GC worker, but only the magic and a fixed-seed CRC are checked first, so a non-last kset whose key_num exceeds the PCACHE_KSET_KEYS_MAX buffer reads past its end before the CRC compare. A key's intra-segment offset and length in cache_key_decode() are taken verbatim, so a key running past its segment is replayed into the cache tree and the data CRC check and every later read hit then copy adjacent persistent memory into the caller's bio -- an out-of-bounds read that leaks to user space. Both fields are controlled by whoever supplies the cache device (CAP_SYS_ADMIN); the CRC seed is public. Add kset_onmedia_valid() to bound key_num before any kset read, and reject a key whose offset plus length, computed in 64 bits, exceeds the segment data_size. Valid metadata is unaffected.
CVE-2026-80961
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: cve:CVE-2026-80961
Linux
Source reference: /containers/cna/affected/0/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Linux
Source reference: /containers/cna/affected/1/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "1d57628ff95b32d5cfa8d8f50e07690c161e9cf0",
"lessThan": "d8caf96040a06096276ab72f5e1e8547c014c564",
"versionType": "git"
},
{
"status": "affected",
"version": "1d57628ff95b32d5cfa8d8f50e07690c161e9cf0",
"lessThan": "5ac38f4b4862fad6e7270fde5c3356a822ce74ca",
"versionType": "git"
},
{
"status": "affected",
"version": "1d57628ff95b32d5cfa8d8f50e07690c161e9cf0",
"lessThan": "f11deb032fd84081e7831cffcba895d893054a22",
"versionType": "git"
}
],
"programFiles": [
"drivers/md/dm-pcache/cache.h",
"drivers/md/dm-pcache/cache_gc.c",
"drivers/md/dm-pcache/cache_key.c",
"drivers/md/dm-pcache/cache_writeback.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "6.18"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "6.18",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/md/dm-pcache/cache.h",
"drivers/md/dm-pcache/cache_gc.c",
"drivers/md/dm-pcache/cache_key.c",
"drivers/md/dm-pcache/cache_writeback.c"
],
"defaultStatus": "affected"
}
]- Related CVEs
- CVE-2026-80961
Source reference:
/cveMetadata/cveId
Publisher severity
high
Source reference: /containers/cna/metrics
- Event
- #34919 · Revision 1
- Added to Heist Feed
- Publisher date