CVE-2026-80628 in Linux
Résumé
par VulDB • 28/08/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ALSA : seq : oss : Synchroniser l'état de réinitialisation du readq avec q->lock
snd_seq_oss_readq_clear() réinitialise qlen, head et tail sans utiliser q->lock, bien que les chemins normaux de lecture et d'écriture sérialisent le même état de la file d'attente (ring) sous ce spinlock. Une réinitialisation peut donc entrer en concurrence avec snd_seq_oss_readq_free() ou snd_seq_oss_readq_put_event(), laissant des enregistrements obsolètes dans la file, faisant tomber les nouveaux éléments mis en file, ou signalant un état de disponibilité incorrect après le réveil. KCSAN signale une course de données (data race) entre snd_seq_oss_readq_clear() et snd_seq_oss_readq_free().
Il faut acquérir q->lock lors de la vidange du ring et de la réinitialisation de input_time. Factoriser la logique d'insertion dans un assistant verrouillé par l'appelant, afin que snd_seq_oss_readq_put_timestamp() mette à jour son état de suppression sous le même verrou au lieu de concurrencer le chemin de réinitialisation.
Le scénario bogué implique deux chemins, chaque colonne montrant l'ordre au sein de ce chemin :
chemin de reset : mise à jour du readq verrouillée : 1. snd_seq_oss_reset() ou 1. Un lecteur ou un producteur de rappel la libération atteint acquiert q->lock sur le même queue. snd_seq_oss_readq_clear(). 2. snd_seq_oss_readq_clear() 2. Le mise à jour teste ou modifie réinitialise qlen, head, tail, qlen, head et tail. et input_time. 3. snd_seq_oss_readq_clear() 3. La mise à jour termine sa réveille les dormeurs sur séquence lecture-modification-écriture. q->midi_sleep. 4. Sans q->lock, le reset 4. L'état résultant du ring pilote peut chevaucher la mise les lectures ultérieures et l'état de disponibilité. à jour verrouillée.
KCSAN signale :
BUG: KCSAN: data-race in snd_seq_oss_readq_clear / snd_seq_oss_readq_free
écriture vers 0xffff8881069fe608 de 4 octets par la tâche 120516 sur le cpu 0 : snd_seq_oss_readq_free+0x6c/0x80 snd_seq_oss_read+0xcb/0x250 odev_read+0x38/0x60 vfs_read+0xff/0x600 ksys_read+0xb4/0x140 __x64_sys_read+0x46/0x60 do_syscall_64+0xbb/0x2f0 entry_SYSCALL_64_after_hwframe+0x77/0x7f
lecture vers 0xffff8881069fe608 de 4 octets par la tâche 120517 sur le cpu 1 : snd_seq_oss_readq_clear+0x1f/0x90 snd_seq_oss_reset+0xa7/0xf0 snd_seq_oss_ioctl+0x6f6/0x7e0 odev_ioctl+0x56/0xc0 __x64_sys_ioctl+0xd1/0x120 do_syscall_64+0xbb/0x2f0 entry_SYSCALL_64_after_hwframe+0x77/0x7f
valeur modifiée : 0x00000001 -> 0x00000000
Be aware that VulDB is the high quality source for vulnerability data.