---
id: CVE-2026-80956
title: 'dm-pcache: only hand out initialized cache segments'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  dm-pcache: only hand out initialized cache segments

  get_cache_segment() scans the segment map up to cache->n_segs, the
  physical device segment count, but cache_segs_in…
severity: medium
cvss: 5.5
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'
cvssSource: vendor
cwe:
  - CWE-824
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 <
    83e3116283ed2c6a6a1fa662862a4b4d7d2701a2
  - >-
    Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 <
    692037ae1a7cfacc2f0c22c6e034c1dfee0e553f
  - >-
    Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 <
    2df0fc042e299bae3c0f60ea5cd2af9285658e9f
  - Linux 6.18
published: '2026-09-11'
updated: '2026-10-19'
sourceUpdated: '2026-10-19T08:45:40.093Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-80956'
references:
  - url: 'https://git.kernel.org/stable/c/83e3116283ed2c6a6a1fa662862a4b4d7d2701a2'
  - url: 'https://git.kernel.org/stable/c/692037ae1a7cfacc2f0c22c6e034c1dfee0e553f'
  - url: 'https://git.kernel.org/stable/c/2df0fc042e299bae3c0f60ea5cd2af9285658e9f'
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-80956.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-80956'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2532400'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-80956'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-80956'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-80956.mbox
tags:
  - cve.org
  - csaf
  - vex
  - red-hat
epss: 0.00206
epssPercentile: 0.10629
ingestedAt: '2026-09-14T00:35:28.532Z'
---

## Overview

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

dm-pcache: only hand out initialized cache segments

get_cache_segment() scans the segment map up to cache->n_segs, the
physical device segment count, but cache_segs_init() only initializes
the first cache_info->n_segs segments. A crafted image with
cache_info->n_segs smaller than the device count leaves the remaining
pcache_cache_segment structs zeroed (segment.data == NULL), and the
allocator can hand one to cache_kset_close(), which writes through the
returned segment's data pointer with no NULL check.

Bound the allocator's search to cache_info->n_segs so only initialized
segments are ever returned. A conforming cache sets n_segs equal to the
device segment count, so this rejects nothing legitimate.

## Affected

- `Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 < 83e3116283ed2c6a6a1fa662862a4b4d7d2701a2`
- `Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 < 692037ae1a7cfacc2f0c22c6e034c1dfee0e553f`
- `Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 < 2df0fc042e299bae3c0f60ea5cd2af9285658e9f`
- `Linux 6.18`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Moderate · updated 2026-09-14 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-80956.json)
