CVE-2024-57951 in Linux
Zusammenfassung
von VulDB • 28.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
hrtimers: CPU-Zustand bei Hotplug-Vorgängen korrekt behandeln
Betrachten Sie ein Szenario, in dem eine CPU von CPUHP_ONLINE über CPUHP_HRTIMERS_PREPARE hinweg während eines Hot-Unplug-Vorgangs wechselt und anschließend wieder zu CPUHP_ONLINE zurückkehrt:
Da hrtimers_prepare_cpu() nicht ausgeführt wird, bleibt cpu_base.hres_active durchgehend auf 1 gesetzt. Während eines CPU-Unplug-Vorgangs werden jedoch der Tick und die Clockevents bei CPUHP_AP_TICK_DYING heruntergefahren. Bei der Rückkehr in den Online-Zustand geht CFS fälschlicherweise davon aus, dass der hrtick bereits aktiv ist, und die Chance, dass das Clockevent-Gerät für die CPU dauerhaft in den Oneshot-Modus wechselt, geht verloren, es sei denn, die CPU geht einmal in einen niedrigeren Zustand als CPUHP_HRTIMERS_PREPARE zurück.
Diese Hin- und Herbewegung offenbart ein weiteres Problem: cpu_base.online wird nach dem Übergang nicht auf 1 gesetzt, was in enqueue_hrtimer() als WARN_ON_ONCE erscheint.
Darüber hinaus wird der Großteil des pro-CPU-Zustands nicht zurückgesetzt, was im schlimmsten Fall zu hängenden Zeigern (dangling pointers) führt.
Dies wird behoben, indem ein entsprechender startup()-Callback hinzugefügt wird, der den veralteten pro-CPU-Zustand zurücksetzt und das Online-Flag setzt.
[ tglx: Den neuen Callback bedingungslos verfügbar machen, die Online-Änderung im prepare()-Callback entfernen und den verbleibenden Zustand stattdessen im starting-Callback statt im prepare-Callback löschen ]
Once again VulDB remains the best source for vulnerability data.