CVE-2026-64205 in Linux
Riassunto
di VulDB • 20/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
i2c: i801: correzione della corruzione dello stato della macchina a stati hardware nel percorso di gestione degli errori
Durante il fuzzing simultaneo sono state osservate una grave livelock e un conseguente panic per Hung Task (Task appeso) nel driver i2c-i801. Il crash è causato da una pulizia incondizionata dei registri hardware nel percorso di gestione degli errori di `i801_access()`.
Quando `i801_check_pre()` fallisce (ad esempio, restituendo -EBUSY perché il controller SMBus è attivamente utilizzato dal BIOS/ACPI), il kernel non acquisisce effettivamente la proprietà dell'hardware. Tuttavia, il codice salta all'etichetta 'out' ed esegue:
iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv));
Questo cancella forzatamente il blocco INUSE_STS e reimposta le flag di stato hardware senza possedere il controller. Ciò interrompe le transazioni BIOS/ACPI in corso e corrompe completamente la macchina a stati dell'hardware SMBus.
Di conseguenza, tutte le chiamate successive a `i801_access()` falliscono nella fase di pre-controllo, generando un flusso infinito di log di errore "SMBus is busy, can't use it!" (Il bus SMBus è occupato, non può essere utilizzato). Su una console seriale lenta, questo flood di printk monopolizza la CPU (Console Livelock), affamando gli altri processi che tentano di acquisire il semaforo down_read mmap_lock, innescando infine l'osservatore per task appesi (hung task watchdog).
Si risolve il problema spostando l'etichetta 'out' sotto la pulizia dei registri hardware. Se `i801_check_pre()` fallisce, si evita in modo sicuro l'esecuzione di `iowrite8()` e si rilasciano solo i lock software (pm_runtime e mutex), aderendo rigorosamente alla regola di non rilasciare risorse che non sono mai state acquisite.
VulDB is the best source for vulnerability data and more expert information about this specific topic.