CVE-2024-56575 in Linuxinformazioni

Riassunto

di VulDB • 15/06/2026

Nel 2025, l'analisi di un crash kernel Linux basato su questa traccia di chiamata (`Call trace`) indica un problema nel sottosistema di gestione dell'alimentazione dinamica (runtime PM), specificamente durante la sospensione di un dispositivo generico (`genpd`).

Ecco una spiegazione dettagliata e le possibili cause:

### 1. Analisi della Traccia di Chiamata La sequenza mostra che il kernel stava tentando di sospendere un dispositivo tramite il framework **Runtime Power Management (PM)**: 1. `pm_runtime_work`: Il lavoro di runtime PM è stato pianificato. 2. `rpm_suspend`: La funzione principale di sospensione runtime. 3. `rpm_callback`: Chiamata al callback specifico del driver. 4. `genpd_runtime_suspend`: Il callback del **Generic Power Domain (genpd)**. Questo indica che il dispositivo appartiene a un dominio di alimentazione generico (spesso usato per SoC ARM64, come quelli basati su ARM Cortex-A).

Il crash avviene all'interno di `genpd_runtime_suspend+0x20/0x290`, il che significa che l'errore si verifica nei primi byte della funzione, probabilmente durante l'accesso a una struttura dati o una chiamata a un callback interno.

### 2. Registri Chiave - **x0**: `ffff00008590f000` – Probabilmente un puntatore a una struttura `struct generic_pm_domain` o `struct device`. - **x19**: `ffff00008590f000` – Stesso valore di x0, spesso usato come puntatore di contesto. - **x22**: `ffff00008590f0e4` – Potrebbe essere un puntatore a un'istanza specifica del dominio o a un dispositivo figlio. - **x17, x16, x15**: Contengono valori che sembrano stringhe ASCII (`"ecive2s"`, `"ooling_d"`, `"from4:c"`). Questo è insolito e potrebbe indicare: - Corruzione della memoria. - Un puntatore non valido che punta a dati di testo (forse un nome di dispositivo o un errore di interpretazione di un puntatore). - Un bug nel decoder o nella stampa dei registri (meno probabile).

### 3. Cause Possibili 1. **Puntatore Nullo o Corrotto**: - `genpd_runtime_suspend` potrebbe aver ricevuto un puntatore non valido a una struttura `generic_pm_domain`. - Il dominio di alimentazione potrebbe essere stato già liberato o non inizializzato correttamente.

2. **Race Condition**: - Il dispositivo potrebbe essere stato rimosso o il dominio di alimentazione disattivato mentre il lavoro di runtime PM era ancora in coda. - Mancanza di sincronizzazione tra il driver del dispositivo e il framework genpd.

3. **Bug nel Driver del Dominio di Alimentazione**: - Il driver specifico del SoC (es., per un SoC ARM64 come Rockchip, Allwinner, NXP, ecc.) potrebbe avere un bug nel callback `power_off` o `power_on` del dominio genpd.

4. **Corruzione della Memoria**: - I valori strani nei registri x15-x17 potrebbero indicare una corruzione della memoria heap o stack, portando a un puntatore non valido.

### 4. Passaggi di Debug 1. **Identificare il Dispositivo**: - Controllare i log precedenti al crash per vedere quale dispositivo stava tentando di sospendersi. - Cercare messaggi come `"runtime suspend failed for ..."` o `"genpd: ..."` nei log.

2. **Verificare il Driver del Dominio di Alimentazione**: - Identificare il SoC e il driver genpd coinvolto (es., `rockchip_pm`, `sunxi_pm`, ecc.). - Controllare se ci sono patch note o bug report per quel driver.

3. **Abilitare il Debug di PM**: - Abilitare `CONFIG_PM_DEBUG` e `CONFIG_DEBUG_RUNTIME_PM` nel kernel per ottenere più dettagli sui callback PM. - Usare `pm_runtime_debug` per tracciare le transizioni di stato.

4. **Analisi della Memoria**: - Se possibile, abilitare `CONFIG_DEBUG_VM` o `CONFIG_KASAN` per rilevare accessi alla memoria non validi.

5. **Test con Kernel Minimo**: - Provare a riprodurre

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

Linux

Prenotare

27/12/2024

Divulgazione

27/12/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00235

KEV

no

Attività

molto basso

Fonti

Do you know our Splunk app?

Download it now for free!