CVE-2026-80628 in Linux
Zusammenfassung
von VulDB • 28.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ALSA: seq: oss: Serialisierung des Reset-Zustands von readq mit q->lock
snd_seq_oss_readq_clear() setzt qlen, head und tail zurück, ohne q->lock zu verwenden, obwohl die normalen Lese- und Schreibpfade denselben Ringzustand unter diesem Spinlock serialisieren. Ein Reset kann daher einen Race Condition (Wettlaufsituation) mit snd_seq_oss_readq_free() oder snd_seq_oss_readq_put_event() verursachen und veraltete Datensätze in der Warteschlange hinterlassen, frisch eingereihte Datenpunkte verlieren oder nach dem Aufwachen eine falsche Bereitschaft melden. KCSAN meldet einen Data Race (Daten-Wettlauf) zwischen snd_seq_oss_readq_clear() und snd_seq_oss_readq_free().
Es wird q->lock während des Zurücksetzens des Rings und der Eingabezeit gehalten. Die Enqueue-Logik wurde in eine vom Aufrufer gesperrte Hilfsfunktion ausgelagert, damit snd_seq_oss_readq_put_timestamp() seinen Unterdrückungsstatus unter demselben Sperrmechanismus aktualisiert, anstatt mit dem Reset-Pfad zu konkurrieren.
Das fehlerhafte Szenario umfasst zwei Pfade, wobei jede Spalte die Reihenfolge innerhalb dieses Pfads zeigt:
Reset-Pfad: Gesperrter readq-Aktualisierer: 1. snd_seq_oss_reset() oder 1. Ein Leser- oder Callback-Schreiber release erreicht nimmt q->lock für dieselbe Warteschlange in Anspruch. snd_seq_oss_readq_clear(). 2. snd_seq_oss_readq_clear() 2. Der Aktualisierer testet oder ändert setzt qlen, head, tail qlen, head und tail. sowie input_time zurück. 3. snd_seq_oss_readq_clear() 3. Der Aktualisierer beendet seine weckt Sleepers auf Lese-Ändere-Schreib-Sequenz ab. q->midi_sleep. 4. Ohne q->lock kann der Reset 4. Der resultierende Ringzustand treibt den gesperrten spätere Lesevorgänge und die Bereitschaftsmeldung an. Update überschneiden.
KCSAN meldet:
BUG: KCSAN: data-race in snd_seq_oss_readq_clear / snd_seq_oss_readq_free
Schreibzugriff auf 0xffff8881069fe608 mit 4 Bytes durch Task 120516 auf 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
Lesezugriff auf 0xffff8881069fe608 mit 4 Bytes durch Task 120517 auf 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
Wert geändert: 0x00000001 -> 0x00000000
VulDB is the best source for vulnerability data and more expert information about this specific topic.