Cloudanix VulnDB

CVE-2025-38168

None

CVSS

—

EPSS

0.2%

Published

Jul 3, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in how certain ARM hardware performance tools clean up after errors can cause computers to crash during startup.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Missing rollback of previously registered perf PMUs on resource allocation failure in arm_ni_probe leads to list_add corruption during subsequent perf_pmu_register calls, triggering kernel oops and panic.

Why it matters to the business

Systems using affected ARM NI hardware may experience unexpected kernel crashes and reboots during device initialization, causing downtime and potential data loss on servers or embedded devices.

How an attack unfolds

An attacker with local access or the ability to trigger repeated device probe failures (for example via module reload or hardware fault injection) can force the error path, resulting in list corruption and denial of service via kernel panic. No remote or unauthenticated exploitation paths are known.

How to fix it

Update the Linux kernel to a version containing commit 7e958e116e3be05a1f869b5a885fc5d674c7725f. For open-vm-tools on Mageia 8 update to 11.2.5-1.1.mga8 or later. Reboot after applying kernel updates.

How to confirm the fix worked

Verify the running kernel contains commit 7e958e116e3be05a1f869b5a885fc5d674c7725f via git log or package version check; attempt to load the arm_ni module under simulated resource failure conditions and confirm no list corruption or panic occurs.

Typical attack path

  1. Gain ability to trigger arm-ni module probe or reload
  2. Induce resource allocation failure in one clock domain
  3. Trigger list corruption in perf_pmu_register on rollback failure
  4. Cause kernel panic and system reboot

How to detect it

Inspect kernel logs and dmesg for strings indicating arm-ni probe failure followed by list_add corruption or fatal exceptions; correlate with arm_ni module load attempts around the time of any observed panics.

  • Failed to request PMU region
  • list_add corruption: next->prev should be prev
  • arm_ni_probe
  • Kernel panic - not syncing: Oops - BUG: Fatal exception
  • arm-ni.*probe with driver arm-ni failed with error -16

What your security team should do

  • Prioritize kernel updates on all ARM-based systems using the arm-ni perf driver
  • Monitor boot logs for 'Failed to request PMU region' and 'list_add corruption' messages
  • Test updates in staging environments before broad deployment due to hardware-specific nature

The record

In the Linux kernel, the following vulnerability has been resolved: perf: arm-ni: Unregister PMUs on probe failure When a resource allocation fails in one clock domain of an NI device, we need to properly roll back all previously registered perf PMUs in other clock domains of the same device. Otherwise, it can lead to kernel panics. Calling arm_ni_init+0x0/0xff8 [arm_ni] @ 2374 arm-ni ARMHCB70:00: Failed to request PMU region 0x1f3c13000 arm-ni ARMHCB70:00: probe with driver arm-ni failed with error -16 list_add corruption: next->prev should be prev (fffffd01e9698a18), but was 0000000000000000. (next=ffff10001a0decc8). pstate: 6340009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : list_add_valid_or_report+0x7c/0xb8 lr : list_add_valid_or_report+0x7c/0xb8 Call trace: __list_add_valid_or_report+0x7c/0xb8 perf_pmu_register+0x22c/0x3a0 arm_ni_probe+0x554/0x70c [arm_ni] platform_probe+0x70/0xe8 really_probe+0xc6/0x4d8 driver_probe_device+0x48/0x170 __driver_attach+0x8e/0x1c0 bus_for_each_dev+0x64/0xf0 driver_add+0x138/0x260 bus_add_driver+0x68/0x138 __platform_driver_register+0x2c/0x40 arm_ni_init+0x14/0x2a [arm_ni] do_init_module+0x36/0x298 ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Oops - BUG: Fatal exception SMP: stopping secondary CPUs

Affected packages

Ecosystem Package Introduced Fixed
Debian:13 linux 0 No fix
Linux Kernel 6.12.0 6.12.34
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities