Bug 2535405 (CVE-2026-89965) - CVE-2026-89965 kernel: nvdimm/btt: reject an arena whose nfree is below the lane count
Summary: CVE-2026-89965 kernel: nvdimm/btt: reject an arena whose nfree is below the l...
Keywords:
Status: NEW
Alias: CVE-2026-89965
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-16 12:44 UTC by OSIDB Bzimport
Modified: 2026-10-16 12:23 UTC (History)
17 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-09-16 12:44:00 UTC
In the Linux kernel, the following vulnerability has been resolved:

nvdimm/btt: reject an arena whose nfree is below the lane count

The BTT info block's nfree field, the number of reserve free blocks, is
read from the medium without validation.  btt_freelist_init() and
btt_rtt_init() size the per-lane freelist[] and rtt[] arrays by nfree,
but the I/O path indexes them by the lane from nd_region_acquire_lane(),
which is bounded by nd_region->num_lanes (ND_MAX_LANES), not by nfree.
A crafted or foreign arena whose nfree is below the lane count makes
freelist[lane]/rtt[lane] run past the allocation: an out-of-bounds write.

btt.rst documents the nlanes = min(nfree, num_cpus) invariant, which the
code does not currently honor: num_lanes is ND_MAX_LANES regardless of
nfree.  Reject an arena whose nfree is below num_lanes at discovery,
before the per-lane arrays are allocated, enforcing that invariant.


Note You need to log in before you can comment on or make changes to this bug.