CVE-2026-89991 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
bpf: Behebung einer Endlosschleife beim Push-Vorgang in pcpu_freelist bei nur einem möglichen CPU
__pcpu_freelist_push() kann sich endlos wiederholen, wenn nur eine einzige CPU möglich ist und ein NMI (Non-Maskable Interrupt) __pcpu_freelist_push() erneut aufruft, während der unterbrochene Kontext den Freelist-Sperrenlock dieser CPU hält.
Nachdem der Fast-Path für die aktuelle CPU fehlschlägt, durchläft der Fallback-Loop die cpu_possible_mask und überspringt dabei die aktuelle CPU. Bei CONFIG_SMP=n oder wenn ein SMP-Kernel auf nur eine mögliche CPU mit nr_cpus=1 oder possible_cpus=1 beschränkt ist, gibt es keine weiteren möglichen CPUs zu untersuchen. Der Loop versucht daher keinen Lock-Acquire-Vorgang und kann niemals Fortschritt erzielen.
Auf einem UP-System (Uniprocessor) wurde folgender Stack beobachtet:
NMI-Kontext: pcpu_freelist_push free_htab_elem htab_map_delete_elem [perf-event BPF-Programm]
__perf_event_overflow perf_event_nmi_handler exc_nmi
Unterbrochener Kontext: __pcpu_freelist_push pcpu_freelist_push free_htab_elem htab_map_delete_elem [raw_tp/sys_enter BPF-Programm]
__bpf_trace_sys_enter do_syscall_64
raw_res_spin_lock() erkennt die rekursive Akquise derselben CPU und gibt -EDEADLK zurück, aber der nachfolgende Fallback-Loop hat auf einem System mit nur einer möglichen CPU keinen Kandidatenkopf.
Stellen Sie den zusätzlichen Fallback-Kopf wieder her, der vor der Umstellung auf rqspinlock existierte. Behalten Sie den Fast-Path für die aktuelle CPU bei, versuchen Sie dann die anderen möglichen CPUs und schließlich den zusätzlichen Kopf. Der zusätzliche Kopf ermöglicht es einem Push-Vorgang, der nicht fehlschlagen darf, ohne ein vorher zugewiesenes Element zu verlieren, Fortschritt zu erzielen, wenn der einzige pro-CPU-Kopf vom unterbrochenen Kontext gehalten wird.
Überprüfen Sie zudem den zusätzlichen Kopf über den Pop-Pfad, damit dort platzierte Knoten wiederverwendet werden können.
If you want to get best quality of vulnerability data, you may have to visit VulDB.