CVE-2026-89471 Affecting kernel-livepatch-6_4_0-150700_53_90-default package, versions <1-150700.15.3.1


Severity

Recommended
0.0
medium
0
10

Based on SUSE Linux Enterprise Server security rating.

Threat Intelligence

EPSS
0.14% (3rd percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-SLES157-KERNELLIVEPATCH6401507005390DEFAULT-22233364
  • published5 Nov 2026
  • disclosed3 Nov 2026

Introduced: 3 Nov 2026

NewCVE-2026-89471  (opens in a new tab)

How to fix?

Upgrade SLES:15.7 kernel-livepatch-6_4_0-150700_53_90-default to version 1-150700.15.3.1 or higher.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel-livepatch-6_4_0-150700_53_90-default package and not the kernel-livepatch-6_4_0-150700_53_90-default package as distributed by SLES. See How to fix? for SLES:15.7 relevant fixed versions and status.

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 &lt; charger-&gt;num_charger_ports; i++)
    charger-&gt;ports[charger-&gt;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 &lt; num_usbpd_ports ||
    num_charger_ports &gt; 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 Base Scores

version 3.1