CVE-2026-92503 in Linuxinformation

Résumé

par VulDB • 18/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

ext4 : correction d'un blocage ABBA dans ext4_xattr_inode_cache_find()

Syzbot/stress-ng a signalé un blocage de type ABBA (ABBA deadlock) dans ext4 lors de l'exécution de charges de travail xattr concurrentes (en utilisant l'option de montage/format ea_inode).

Le blocage se produit entre la transaction en cours et le thread d'éviction : - Tâche 1 (stress-ng) : Détient une référence vers un mbcache_entry partagé (ce) et appelle ext4_xattr_inode_cache_find() -> ext4_iget() pour récupérer l'inode EA correspondant. Comme l'inode EA est en cours d'éviction, ext4_iget() bloque dans __wait_on_freeing_inode() en attendant la fin de l'éviction. - Tâche 2 (thread d'éviction) : Évince actuellement le même inode EA dans ext4_evict_ea_inode(). Il appelle mb_cache_entry_wait_unused(oe), ce qui bloque en attendant que la tâche 1 libère la référence vers le mbcache_entry.

Pour rompre ce blocage, implémentez un nouveau drapeau de configuration pour ext4_iget() nommé EXT4_IGET_NOWAIT. Lorsqu'il est défini, effectuez une recherche non bloquante de l'inode via l'API find_inode_nowait() du VFS.

Si l'inode est en cours d'éviction (marqué avec I_FREEING ou I_WILL_FREE) ou créé (I_CREATING), ou s'il n'est pas présent dans le cache d'inodes du VFS (cache miss), ignorez-le simplement (en renvoyant -ENOENT) plutôt que d'attendre la fin de l'éviction/creation, ce qui rompt le cycle ABBA.

Puisque nous retournons immédiatement -ENOENT en cas de cache miss, nous n'essayons jamais d'allouer un nouvel inode ni d'appeler iget_locked(), éliminant ainsi complètement toute fenêtre de race TOCTOU (Time-of-Check to Time-of-Use).

Si l'inode renvoyé est I_NEW, attendez que son initialisation soit terminée via wait_on_new_inode(). Si l'initialisation échoue et que l'inode est déshaché pendant le réveil dans wait_on_new_inode() (par exemple en raison d'une erreur de lecture E/S dans un autre thread), libérez la référence en toute sécurité et renvoyez -ENOENT. Cette vérification de déhachage s'exécute inconditionnellement sur tous les chemards avec cache hit pour gérer correctement les échecs d'initialisation concurrents.

Enfin, des contrôles de validation standard (y compris is_bad_inode, EXT4_EA_INODE_FL, file_acl et les drapeaux xattr) sont exécutés normalement dans check_igot_inode() afin de garantir pleinement la sécurité au niveau du VFS.

Dans ext4_xattr_inode_cache_find(), appelez ext4_iget() avec le nouveau drapeau EXT4_IGET_NOWAIT pour effectuer la recherche non bloquante dans le cache.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Réserver

16/09/2026

Divulgation

17/09/2026

Modérer

accepté

Entrée

VDB-407010

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Want to know what is going to be exploited?

We predict KEV entries!