Back to CVE records
High 8.4Published Sep 11, 2026

CVE-2026-89471power: supply: cros_usbpd-charger: bound the EC-reported port count

Updated under an hour ago ()

Does this affect you?

It affects Linux. Add what you run to find out whether that includes you.

No exploitation reported and no EPSS estimate yet.

In the Linux kernel, the following vulnerability has been resolved: power: supply: cros_usbpd-charger: bound the EC-reported port count cros_usbpd_charger_probe() reads two port counts from the EC and uses one of them, num_charger_ports, as the loop bound when populating a fixed-size array: struct port_data *ports[EC_USB_PD_MAX_PORTS]; /* 8 entries */ ... for (i = 0; i < charger->num_charger_ports; i++) charger->ports[charger->num_registered_psy++] = port; Both num_usbpd_ports (from EC_CMD_USB_PD_PORTS) and num_charger_ports (from EC_CMD_CHARGE_PORT_COUNT) are u8 values reported by the EC. The only validation is a sanity check that compares the two EC-reported values against each other: if (num_charger_ports < num_usbpd_ports || num_charger_ports > num_usbpd_ports + 1) return -EPROTO; It never checks either count against EC_USB_PD_MAX_PORTS, the size of the ports[] array. A malfunctioning, malicious or compromised EC that reports num_usbpd_ports == num_charger_ports == N for any N > 8 (for example both 255) passes this check, and the loop then writes N pointers into the 8-entry ports[] array embedded in the devm_kzalloc()'d charger_data, overflowing it by up to 255 - 8 = 247 entries (~1976 bytes): a slab out-of-bounds write. Reject a port count larger than the ports[] array can hold.

CVSS
8.4 HIGH (v3.1, CNA)CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness (CWE)
Not given
Known exploited
Not in CISA's KEV catalog
EPSS (exploitation in the next 30 days)
Not loaded for this CVE
Assigned by
Linux
NVD analysis
Received
Record last updated
Sep 14, 2026
First seen by InfoSec Signals
Oct 9, 2026

Affected products

Affected products
Linux Linux
linux:linux (from the name)
from f68b883e8fad23ed0ac4756d91594809d78678ed before 0b5096f6804161b61451b1cec0e38678630be849; from f68b883e8fad23ed0ac4756d91594809d78678ed before c46c9f447415ca802afab51dea1eafc08ddff1c6; from f68b883e8fad23ed0ac4756d91594809d78678ed before a1905375dfc0b9612bbee52fc066e3a70c0d671d; from f68b883e8fad23ed0ac4756d91594809d78678ed before 2746d502b12b343384fb747bdef9cbcfbd7444a2; from f68b883e8fad23ed0ac4756d91594809d78678ed before fd29d08ee487f3bf50f2575aaa74f78a74b09b21; from f68b883e8fad23ed0ac4756d91594809d78678ed before 78be8b7403ff7638162438b664a07d19da76059e; from f68b883e8fad23ed0ac4756d91594809d78678ed before 3d1e01443b221081258ff34ea0cdd0431e4ff62e; from f68b883e8fad23ed0ac4756d91594809d78678ed before 48355ce49359740f52e94d3623f6fc557ce341f0
CNA record

References

The CVE record is authoritative. Products marked “from the name” were identified from the CNA's free-text names, not a CPE, and are matched less certainly. This product uses the NVD API but is not endorsed or certified by the NVD.

Your cookie choices
We use essential cookies to run this site, and, only with your consent, an advertising cookie from Google to measure whether our ads lead to sign-ups and subscriptions. See our for details.