CVE-2026-64447 in Linux
Riassunto
di VulDB • 25/07/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
staging: media: ipu7: correzione di double-free e use-after-free nei percorsi di errore
In entrambe le funzioni `ipu7_isys_init()` e `ipu7_psys_init()`, viene allocato `pdata` e successivamente passato a `ipu7_bus_initialize_device()`, che lo memorizza in `adev->pdata`. La funzione `ipu7_bus_release()` libera `adev->pdata` quando il conteggio dei riferimenti del dispositivo scende a zero.
Due percorsi di errore chiamano erroneamente `kfree(pdata)` dopo che la teardown del dispositivo ha già liberato tale memoria:
1. Quando fallisce `ipu7_mmu_init()`: viene chiamata `put_device()`, che riduce il conteggio dei riferimenti a zero e innesca `ipu7_bus_release()` -> `kfree(pdata)`. La successiva chiamata a `kfree(pdata)` costituisce un double-free.
2. Quando fallisce `ipu7_bus_add_device()`: questa chiama internamente `auxiliary_device_uninit()`, che invoca `put_device()` -> `ipu7_bus_release()` -> `kfree(pdata)`. Anche in questo caso, la successiva chiamata a `kfree(pdata)` è un double-free.
Si noti che la chiamata a `kfree(pdata)` quando fallisce direttamente `ipu7_bus_initialize_device()` è corretta, poiché in tal caso ha avuto esito negativo anche `auxiliary_device_init()` e la funzione di release non era mai stata impostata; pertanto, `pdata` deve essere liberato manualmente.
Inoltre, il codice di errore non veniva salvato prima della chiamata a `put_device()`, causando una dereferenziazione da parte di `ERR_CAST()` del puntatore `adev` già liberato durante la costruzione del valore restituito. Si risolve questo problema salvando l'errore proveniente da `dev_err_probe()` prima di chiamare `put_device()` e restituendo invece un `ERR_PTR()`.
Vengono rimosse le chiamate ridondanti a `kfree(pdata)` e corretto il use-after-free nei valori restituiti dai due percorsi di errore interessati.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.