CVE-2025-38168
NoneCVSS
—
EPSS
0.2%
Published
Jul 3, 2025
CISA due date
—
Cloudanix analysis
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
- Gain ability to trigger arm-ni module probe or reload
- Induce resource allocation failure in one clock domain
- Trigger list corruption in perf_pmu_register on rollback failure
- 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
- CVE-2025-39885 In the Linux kernel, the following vulnerability has been resolved: ocfs2: fix recursive… Also affects linux
- CVE-2025-39883 In the Linux kernel, the following vulnerability has been resolved: mm/memory-failure… Also affects linux
- CVE-2025-39884 In the Linux kernel, the following vulnerability has been resolved: btrfs: fix subvolume… Also affects linux
- CVE-2025-39886 In the Linux kernel, the following vulnerability has been resolved: bpf: Tell memcg to… Also affects linux
- CVE-2025-39876 In the Linux kernel, the following vulnerability has been resolved: net: fec: Fix… Also affects linux
- CVE-2025-39880 In the Linux kernel, the following vulnerability has been resolved: libceph: fix invalid… Also affects linux
- CVE-2025-39881 In the Linux kernel, the following vulnerability has been resolved: kernfs: Fix UAF in… Also affects linux
- CVE-2025-39882 In the Linux kernel, the following vulnerability has been resolved: drm/mediatek: fix… Also affects linux