KernelScan.io

HIGH Introduced in 6.16

nvme FDPDescriptor OOB

CVE-2026-97433

CVSS 8.2 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

KernelScan AI3.5LOW

01

In the Linux kernel, the following vulnerability has been resolved: nvme: validate FDP configuration descriptor sizes Validate descriptor sizes while walking the FDP configurations log so dsze == 0 or a descriptor past the log end cannot cause unbounded iteration or reads past the buffer.

02

Engine v0.6.0

Risk summary

Systems using NVMe storage are affected when the kernel parses Flexible Data Placement (FDP) configuration descriptors from a malicious or malformed NVMe controller log page. A crafted descriptor size can cause the parser to read past the allocated buffer (leaking kernel heap data) or stall the CPU in a no-progress loop. Exploitation requires a malicious or compromised NVMe device, reachable via physical PCIe or NVMe-over-Fabrics network connections.

Affecteddrivers/nvme/host/core.c (nvme host driver)

Vulnerability analysis

When the NVMe host driver queries FDP configuration from a controller, it walks a list of configuration descriptors by advancing a pointer using each descriptor's self-declared size field. The original code advances the pointer and only checks whether the new position has reached the buffer boundary afterward, and it never validates that the size is non-zero. A descriptor with a zero size causes the parser to spin in place without making progress, while a descriptor whose size extends beyond the buffer end allows kernel heap memory to be read out of bounds when subsequent descriptor fields are accessed. The fix validates that each descriptor size is non-zero and that the entire descriptor fits within the buffer before advancing the pointer, bailing out with a warning on any malformed entry. This code path is reached automatically when the kernel initializes FDP on an NVMe controller — a malicious PCIe NVMe device supplied by an attacker, or a malicious or man-in-the-middle NVMe-over-Fabrics target returning a crafted log page, can trigger it. No host-side privileges are required; the attack surface is the NVMe controller itself.

03

BranchIntroducedFixed inPatch commit
6.186.166.18.5397efd7a41aac
mainline6.167.20ef4daa6534a