CVE-2025-38298
NoneCVSS
—
EPSS
0.2%
Published
Jul 10, 2025
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's handling of certain memory error modules can crash the entire system when those modules are removed and put back in under specific conditions.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
Failure to reset adxl_component_count in adxl_put() during module unload causes double-increment on reload, resulting in out-of-bounds read of the ADXL component array inside skx_adxl_decode and a subsequent general protection fault during MCE error processing.
Why it matters to the business
Kernel crashes and potential denial of service on systems using i10nm_edac or skx_edac_common modules; systems running affected stable kernels must be updated promptly to avoid unplanned downtime, especially in environments performing hardware error injection or frequent module reloads.
How an attack unfolds
An attacker with local access unloads i10nm_edac, reloads it, then triggers machine-check error paths; the inflated adxl_component_count leads to an out-of-bounds reference in skx_adxl_decode called from skx_mce_check_error, crashing the kernel via a general protection fault.
How to fix it
Upgrade to a fixed kernel version: Linux 5.4.295 or later, linux-lts 6.12.41-r0 or later, or apply commit 80bf28fd623d97dd4f4825fbbe9d736cec2afba3. Reboot after installing the updated kernel packages.
How to confirm the fix worked
Confirm the running kernel contains the fix by checking the presence of the adxl_put() reset of adxl_component_count or by verifying the exact fixed commit/version string; attempt the unload/reload + error injection sequence in a test environment and observe absence of the GPF.
Typical attack path
- Obtain local access or ability to load/unload kernel modules
- Unload i10nm_edac (which pulls in skx_edac_common)
- Reload i10nm_edac
- Perform error injection or trigger MCE events
- Cause skx_mce_check_error to invoke skx_adxl_decode with corrupted count
- Trigger general protection fault and kernel oops
How to detect it
Search kernel logs for 'general protection fault' combined with 'skx_adxl_decode' or 'mce_gen_pool_process' stack traces; look for repeated module unload/reload events of i10nm_edac or skx_edac_common immediately preceding crashes.
What your security team should do
- Prioritize patching all production kernels to the listed fixed versions within the next maintenance window
- Restrict unprivileged module loading via kernel module signing and lockdown mode where feasible
- Monitor for kernel oops and MCE-related workqueue crashes in system logs
- Test error-handling paths in staging before deploying updated kernels to hardware with Intel memory controllers
The record
In the Linux kernel, the following vulnerability has been resolved: EDAC/skx_common: Fix general protection fault After loading i10nm_edac (which automatically loads skx_edac_common), if unload only i10nm_edac, then reload it and perform error injection testing, a general protection fault may occur: mce: [Hardware Error]: Machine check events logged Oops: general protection fault ... ... Workqueue: events mce_gen_pool_process RIP: 0010:string+0x53/0xe0 ... Call Trace: <TASK> ? die_addr+0x37/0x90 ? exc_general_protection+0x1e7/0x3f0 ? asm_exc_general_protection+0x26/0x30 ? string+0x53/0xe0 vsnprintf+0x23e/0x4c0 snprintf+0x4d/0x70 skx_adxl_decode+0x16a/0x330 [skx_edac_common] skx_mce_check_error.part.0+0xf8/0x220 [skx_edac_common] skx_mce_check_error+0x17/0x20 [skx_edac_common] ... The issue arose was because the variable 'adxl_component_count' (inside skx_edac_common), which counts the ADXL components, was not reset. During the reloading of i10nm_edac, the count was incremented by the actual number of ADXL components again, resulting in a count that was double the real number of ADXL components. This led to an out-of-bounds reference to the ADXL component array, causing the general protection fault above. Fix this issue by resetting the 'adxl_component_count' in adxl_put(), which is called during the unloading of {skx,i10nm}_edac.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | linux | 0 | No fix |
| Debian:12 | linux | 0 | No fix |
| Debian:13 | linux | 0 | 6.12.35-1 |
| Debian:14 | linux | 0 | 6.12.35-1 |
| Linux | Kernel | 0 | 5.4.295 |
| Mageia:9 | kernel | 0 | 6.6.101-1.mga9 |
| Mageia:9 | kernel-linus | 0 | 6.6.101-1.mga9 |
| Mageia:9 | kmod-virtualbox | 0 | 7.1.10-7.mga9 |
| Mageia:9 | kmod-xtables-addons | 0 | 3.24-83.mga9 |
| Mageia:9 | wireless-regdb | 0 | 20250710-1.mga9 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-azure | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.26.1.160000.2.7 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.26.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.26.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-39876 In the Linux kernel, the following vulnerability has been resolved: net: fec: Fix… Also affects linux
- CVE-2025-39869 In the Linux kernel, the following vulnerability has been resolved: dmaengine: ti: edma… Also affects linux
- CVE-2025-39873 In the Linux kernel, the following vulnerability has been resolved: can: xilinx_can… Also affects linux
- CVE-2025-39863 In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix… Also affects linux
- CVE-2025-39865 In the Linux kernel, the following vulnerability has been resolved: tee: fix NULL pointer… Also affects linux
- CVE-2025-39866 In the Linux kernel, the following vulnerability has been resolved: fs: writeback: fix… Also affects linux