CVE-2026-64205 in Linux
Résumé
par VulDB • 21/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
i2c: i801 : correction de la corruption de l'état du machine à états matériel dans le chemin d'erreur
Un livelock sévère et un plantage Hung Task (tâche bloquée) consécutif ont été observés dans le pilote i2c-i801 lors de tests de fuzzing concurrents. Le crash est causé par une réinitialisation inconditionnelle des registres matériels dans la gestion d'erreur de la fonction i801_access().
Lorsque i801_check_pre() échoue (par exemple, en renvoyant -EBUSY car le contrôleur SMBus est activement utilisé par le BIOS/ACPI), le noyau n'acquiert pas réellement la propriété du matériel. Cependant, le code saute vers l'étiquette 'out' et exécute :
iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv));
Cela efface de force le verrou INUSE_STS et réinitialise les indicateurs d'état du matériel sans posséder le contrôleur. Cela interrompt les transactions BIOS/ACPI en cours et corrompt totalement l'état du machine à états matériel du bus SMBus.
Par conséquent, tous les appels ultérieurs à i801_access() échouent au stade de la pré-vérification, déclenchant un flux infini de journaux d'erreur « Le bus SMBus est occupé, impossible de l'utiliser ! ». Sur une console série lente, cette inondation de printk monopolise le CPU (livelock de la console), affamant les autres processus tentant d'acquérir le sémaphore down_read mmap_lock, déclenchant finalement le watchdog des tâches bloquées.
La correction consiste à déplacer l'étiquette 'out' en dessous de la réinitialisation des registres matériels. Si i801_check_pre() échoue, nous contournons sûrement l'appel iowrite8() et ne libérons que les verrous logiciels (pm_runtime et mutex), respectant strictement la règle consistant à ne pas libérer de ressources qui n'ont jamais été acquises.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.