KernelScan.io

HIGH

loongarch PackageIds Overflow

CVE-2026-89904

CVSS 8.4 / 10.0 NVD

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

KernelScan AI6.7MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: LoongArch: Fix acpi_package_ids[] array overflow With LoongArch virt machine, a typical setting is one core per socket, there will max 256 sockets (packages) on one VM. With PPTT acpi table, array acpi_package_ids[] will be overflowed. Here change the array size of acpi_package_ids[] with the max value of MAX_PACKAGES and KVM_MAX_VCPUS.

02

Engine v0.6.0

Risk summary

A static integer array used during LoongArch ACPI PPTT topology parsing is sized too small for systems with many CPU sockets, allowing an out-of-bounds write when more packages exist than the array can hold. The bug is reachable only by whoever controls the ACPI tables supplied to the kernel — a hypervisor admin on a LoongArch VM or someone with root or physical access to firmware on bare metal. The overflow can corrupt adjacent kernel memory, leading to panic or potential code execution.

Affectedarch/loongarch/kernel/acpi.c (LoongArch ACPI)

Vulnerability analysis

During boot, the LoongArch kernel parses the ACPI PPTT table to retrieve CPU package IDs and stores them in a fixed-size static array. On virtual machines configured with one core per socket, the number of packages can exceed the array's declared capacity, causing the kernel to write past the end of the array and corrupt adjacent memory. The fix enlarges the array to the maximum of the existing package limit and the KVM maximum VCPU count so that all valid configurations are covered. The vulnerable code path is reached only at boot when the kernel consumes firmware-supplied ACPI tables, so an attacker must already control those tables — either by operating the hypervisor on a LoongArch VM or by having root or physical access to modify firmware on a bare-metal LoongArch machine.

03

BranchIntroducedFixed inPatch commit
6.126.12.1016.12.1100195e04b1eec
6.186.18.426.18.51d3fd094c13c6
7.17.1.67.26311b8c471af
7.2—7.2.52a2367d46d7a
mainline—7.3—
cip/6.12—6.12.111-cip320195e04b1eec

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32