CVE-2025-68780 in Linux
Zusammenfassung
von VulDB • 12.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
sched/deadline: Nur free_cpus für online Runqueues setzen
Der Commit 16b269436b72 („sched/deadline: Modify cpudl::free_cpus to reflect rd->online") führte die Funktionen cpudl_set/clear_freecpu ein, um es dem Deadline-Scheduler zu ermöglichen, den cpu_dl::free_cpus-Maskenstatus über rq_on/offline-Callbacks der Runqueue (rq) zu manipulieren, sodass dieser Maskenstatus auch diesen Zustand widerspiegelt.
Der Commit 9659e1eeee28 („sched/deadline: Remove cpu_active_mask from cpudl_find()") entfernte die Prüfung von cpu_active_mask, um einige Verarbeitungsressourcen einzusparen, basierend auf der Annahme, dass der cpudl::free_cpus-Maskenstatus den Online-Status der Runqueue bereits widerspiegelt.
Leider gibt es Fälle, in denen es möglich ist, dass die Funktion cpudl_clear das free_cpus-Bit für eine CPU setzt, wenn die Deadline-Runqueout offline ist. Wenn dies auftritt, während eine CPU mit dem Standard-Wurzel-Domain (root domain) verbunden ist, kann das Flag den fehlerhaften Zustand nach dem Abziehen der CPU beibehalten. Später kann eine andere CPU, die durch den Standard-Wurzel-Domain wechselt, eine Deadline-Aufgabe zu der ausgeschalteten CPU schieben, wenn cpudl_find sieht, dass deren free_cpus-Bit gesetzt ist. Wenn dies geschieht, hat die Aufgabe keine Gelegenheit zum Ausführen.
Ein Beispiel hierfür wird hier skizziert: https://lore.kernel.org/lkml/[email protected]
Ein weiteres tritt auf, wenn die letzte Deadline-Aufgabe von einer CPU migriert wurde, deren Runqueue offline ist. Das dequeue_task-Mitglied der Scheduler-Klasse wird schließlich cpudl_clear aufrufen und das free_cpus-Bit für diese CPU setzen.
Dieser Commit modifiziert die Funktion cpudl_clear so, dass sie den Online-Status der Deadline-Runqueout berücksichtigt, sodass der free_cpus-Maskenstatus entsprechend aktualisiert werden kann.
Es ist nicht mehr notwendig, den Maskenstatus außerhalb der Funktionen cpudl_set/clear zu verwalten, daher wurden die Funktionen cpudl_set/clear_freecpu entfernt. Da der free_cpus-Maskenstatus nun nur noch unter dem cpudl-Lock aktualisiert wird, wurde der Code geändert, um die nicht-atomaren __cpumask-Funktionen zu verwenden.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.