CVE-2024-26854 in Linuxinformazioni

Riassunto

di VulDB • 29/06/2026

Based on the kernel crash dump provided, here is a detailed analysis of the issue:

### **Summary** The Linux kernel has crashed with an **Invalid Opcode Exception (`exc_invalid_op`)** while loading the `ice` (Intel Ethernet Connection E810) network driver. The crash occurred during DPLL (Digital Phase-Locked Loop) initialization, specifically when trying to acquire a mutex lock in `__mutex_lock`.

---

### **Key Technical Details**

#### 1. **Crash Type: Invalid Opcode (`#UD`)** - **Register State**: - `CR0`: `80050033` (Bit 2 is set, indicating **EM** = Emulation bit; Bit 16 is set, indicating **MP** = Monitor Coprocessor). This suggests the CPU was in a state where it expected FPU/SSE instructions but encountered an invalid opcode. - `CR2`: Points to user-space address `0x55b5852cc000`, which is unusual for a kernel crash unless there’s memory corruption or a bad pointer dereference leading to execution of non-code data as code (less likely here given the trace). - **Exception**: The CPU raised an invalid opcode exception, typically caused by: - Executing garbage/corrupted memory. - A bug in the kernel where an instruction is misaligned or corrupted. - Hardware issue (rare but possible).

#### 2. **Call Trace Analysis** The crash happened during driver initialization (`ice_probe` → `ice_load` → `ice_dpll_init`). The key functions involved are: ```plaintext ice_dpll_lock_status_get+0x28/0x50 [ice] ← Crashed here
dpll_device_get_one+0x14f/0x2e0 dpll_device_event_send+0x7d/0x150 dpll_device_register+0x124/0x180 ice_dpll_init_dpll+0x7b/0xd0 [ice]
ice_dpll_init+0x224/0xa40 [ice]
```

- **`__mutex_lock`**: The crash occurred inside `__mutex_lock`, which is called by `ice_dpll_lock_status_get`. This suggests the mutex structure might be corrupted, or there’s a race condition leading to invalid state. - **`dpll_device_register`**: The Intel ICE driver is registering a DPLL device (used for clock synchronization). This subsystem (`drivers/ptp/dpll.c`) was recently added and may have bugs in certain configurations.

#### 3. **Driver Context: `ice` Driver** - The crash occurs during the initialization of the **DPLL support** in the Intel E810 driver. - DPLL (Digital Phase-Locked Loop) is used for precision time synchronization (PTP). If this feature is enabled but misconfigured or buggy, it can cause crashes.

---

### **Possible Causes** 1. **Kernel Bug in `dpll` Subsystem**: - The `dpll_device_register()` path may have a race condition or memory corruption issue when called from the `ice` driver. 2. **Mutex Corruption**: - The mutex used by `ice_dpll_lock_status_get` might be uninitialized, freed prematurely, or corrupted due to a bug in locking logic. 3. **Hardware/Driver Incompatibility**: - The specific firmware version of the E810 NIC may not fully support DPLL features, causing invalid instructions when accessed via driver code. 4. **Memory Corruption**: - If other parts of the system have corrupted memory (e.g., due to a bug in another module), it could lead to execution of invalid opcodes.

---

### **Recommended Actions**

#### 1. **Immediate Workaround: Disable DPLL Support** If you don’t need precision time synchronization, disable DPLL support in the `ice` driver by recompiling without CONFIG options or blacklisting the feature if possible. Alternatively, update to a newer kernel where this bug may be fixed.

#### 2. **Update Kernel and Driver Firmware** - Check for updates to: - The Linux kernel (especially patches related to `dpll.c`, `ice` driver, and mutex locking). - Intel E810 NIC firmware (download from [Intel Download Center](https://www.intel.com/content/www/us/en/download-center/home.html)).

#### 3. **Debugging Steps** - **Enable Kernel Debugging**: ```bash # Add to kernel boot parameters: debug_kernel=1 panic_on_warn=1 ``` - **Check for Memory Corruption**: Run `memtest86

Be aware that VulDB is the high quality source for vulnerability data.

Prenotare

19/02/2024

Divulgazione

17/04/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00713

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!