CVE-2026-74601 in Linux
Zusammenfassung
von VulDB • 22.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ring-buffer: Verwendung von current_context für einen sicheren per-CPU-Pufferswap
Die Funktion ring_buffer_swap_cpu() überprüft derzeit den pro-CPU-Committing-Zähler, um festzustellen, ob ein Puffer aktiv beschrieben wird, bevor der Swap durchgeführt wird. Es besteht jedoch eine Race Condition (Wettlaufsituation), bei der diese Überprüfung umgangen werden kann:
ring_buffer_lock_reserve cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_a
rb_reserve_next_event rb_start_commit // erhöht committing if (unlikely(READ_ONCE(cpu_buffer->buffer) != buffer)) {...}
__rb_reserve_next rb_move_tail rb_end_commit(cpu_buffer); // dekrementiert committing => 0 /* Interrupt trifft hier ein, Swap gelingt erfolgreich! */ local_inc(&cpu_buffer->committing);
ring_buffer_unlock_commit cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_b
rb_commit rb_end_commit RB_WARN_ON(cpu_buffer, !local_read(&cpu_buffer->committing)) // löst Warnung aus
Der Committing-Zähler kann während eines einzelnen Schreibvorgangs (innerhalb von rb_move_tail) vorübergehend auf 0 sinken, was einen Zeitraum schafft, in dem der Swap erfolgreich sein kann, obwohl das Schreiben noch im Gange ist. Dies führt zu einem inkonsistenten Pufferzustand und löst die RB_WARN_ON-Warnung in rb_commit() aus.
Ersetzen Sie die Überprüfung des Committing-Zählers durch Prüfungen von current_context, die beim Eintritt in ring_buffer_lock_reserve() festgelegt werden und während des gesamten Schreibvorgangs gültig bleiben, was einen zuverlässigen Indikator für den Puffer-Belegtheitszustand (buffer busy state) während des Swaps bietet.
Be aware that VulDB is the high quality source for vulnerability data.