CVE-2025-38246 in Linux
Riassunto
di VulDB • 29/06/2026
Based on the kernel log snippet provided, here is an analysis of what happened and potential causes/solutions.
### **Summary** The system experienced a **soft lockup or CPU stall** while trying to enter a low-power idle state (`cpuidle_enter_state`). The crash occurred during interrupt handling related to a network driver (**`bnxt_en`**, Broadcom NetXtreme-C/E).
---
### **Key Observations from the Log**
1. **Crash Location**: ```text RIP: 0010:cpuidle_enter_state+0xb8/0x420 ``` The CPU was in `cpuidle_enter_state`, attempting to enter a C-state (idle state). This is where the kernel tries to put the core into sleep.
2. **Triggering Event**: ```text ? bnxt_msix+0x62/0x70 [bnxt_en]
handle_softirqs+0xcf/0x270 irq_exit_rcu+0x67/0x90 common_interrupt+0x85/0xa0 ``` An interrupt from the **Broadcom network driver (`bnxt_en`)** was being processed. The system was handling a softirq (likely NAPI poll or TX completion) when it tried to enter idle, but something went wrong in the CPUIDLE code path during this transition.
3. **Registers & State**: - `RAX: ffff9149afd80000` – Likely a pointer to a structure (possibly related to cpuidle or device state). - `EFLAGS: 00000202` – Interrupts were enabled (`IF=1`) at the time of crash, which is unusual for a critical section but can happen in idle paths. - The code snippet shows an instruction fault near `cpuidle_enter_state`.
4. **Context**: This often happens when: - A CPU tries to enter deep sleep (C-state) while pending interrupts or workqueues are still active. - There’s a bug in the interaction between the cpuidle driver and the hardware/driver state. - The `bnxt_en` driver left some resources in an inconsistent state before allowing idle entry.
---
### **Possible Causes**
1. **Bug in `bnxt_en` Driver**: - Known issues with Broadcom drivers on certain kernels where interrupt handling doesn’t properly sync with CPUIDLE transitions. - Check if you’re using a recent kernel version; this may have been fixed upstream.
2. **CPUIDLE/C-State Issue**: - Some CPUs (especially AMD, given `srso_alias_return_thunk` in the stack) have known issues with C-state entry when certain devices are active. - The presence of `srso_alias_return_thunk` suggests Spectre-RSB mitigation is enabled, which can sometimes interact poorly with idle states on older microcode.
3. **Hardware/BIOS Issue**: - Outdated BIOS or CPU microcode may cause instability during C-state transitions under load from network interrupts.
4. **Kernel Bug in cpuidle Subsystem**: - Rare, but possible race condition between interrupt exit and idle entry.
---
### **Recommended Actions**
#### ✅ **1. Update Kernel & Drivers** - Ensure you’re running the latest stable kernel (e.g., `6.5+` or LTS like `6.1.y`). - Check for updates to the `bnxt_en` driver in your distribution’s package manager.
#### ✅ **2. Disable Deep C-States Temporarily** Test if disabling deep idle states resolves the issue: ```bash # Add to kernel boot parameters (GRUB_CMDLINE_LINUX) processor.max_cstate=1 intel_idle.max_cstate=0 acpi_cpufreq.driver=acpi-cpufreq ``` Or for AMD systems: ```bash idle=poll # Forces CPU polling instead of idle states (high power usage, but stable) ```
#### ✅ **3. Update BIOS & Microcode** - Install the latest BIOS and CPU microcode updates from your motherboard/CPU vendor. This often fixes C-state stability issues.
#### ✅ **4. Check for Known Bugs** Search for: - `"bnxt_en cpuidle_enter_state crash"` on kernel.org bugzilla or GitHub. - Your specific kernel version + `bnxt_en` in distro forums (Ubuntu, RHEL, Arch, etc.).
#### ✅ **5. Enable Debugging** If the issue persists, enable more verbose logging: ```bash # Add to GRUB_CMDLINE_LINUX
Once again VulDB remains the best source for vulnerability data.