---
id: CVE-2026-89571
title: 'cxl/features: bound fwctl command payload to the input buffer'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  cxl/features: bound fwctl command payload to the input buffer

  fwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len)
  and passes inbuf and in_len t…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H'
cvssSource: cna
cwe:
  - CWE-125
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 <
    14d52c15d5d99477b20a2d61fe36f347080da6cd
  - >-
    Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 <
    d8957545fe96f7905791c937758ebfc1ae1e5b17
  - >-
    Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 <
    f687394af983df5660b6afae7e0d06969f3af206
  - Linux 6.15
published: '2026-09-11'
updated: '2026-10-19'
sourceUpdated: '2026-10-19T08:49:04.541Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-89571'
references:
  - url: 'https://git.kernel.org/stable/c/14d52c15d5d99477b20a2d61fe36f347080da6cd'
  - url: 'https://git.kernel.org/stable/c/d8957545fe96f7905791c937758ebfc1ae1e5b17'
  - url: 'https://git.kernel.org/stable/c/f687394af983df5660b6afae7e0d06969f3af206'
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89571.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-89571'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2532280'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-89571'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89571'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89571.mbox
tags:
  - cve.org
  - csaf
  - vex
  - red-hat
epss: 0.00164
epssPercentile: 0.05572
scores:
  cna: 7.1
  vendor: 5.5
ingestedAt: '2026-09-14T15:23:07.474Z'
---

## Overview

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

cxl/features: bound fwctl command payload to the input buffer

fwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len)
and passes inbuf and in_len to ->fw_rpc(). The CXL callback cxlctl_fw_rpc()
ignores in_len and never checks the user-controlled op_size against it.

cxlctl_set_feature() bounds op_size only from below
(op_size <= sizeof(feat_in->hdr)) and then reads op_size - sizeof(hdr)
bytes from feat_in->feat_data via cxl_set_feature(). With a small in_len
and a large op_size the first memcpy() already reads past the
kvzalloc(in_len) buffer; the out-of-bounds bytes are placed in the mailbox
payload and sent to the device, and a large enough op_size can walk into
unmapped memory and oops the kernel. The Get paths pin op_size to a fixed
size but likewise read the input struct without checking in_len.

Reject, at the single dispatch point, any request whose fixed header plus
op_size does not fit in the copied-in buffer. The lower-bound test guards
the subtraction and ensures op_size was copied in before it is read.

## Affected

- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < 14d52c15d5d99477b20a2d61fe36f347080da6cd`
- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < d8957545fe96f7905791c937758ebfc1ae1e5b17`
- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < f687394af983df5660b6afae7e0d06969f3af206`
- `Linux 6.15`

## Remediation

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

## Vendor advisories

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