CVE-2024-57951 in Linux
Сводка
по VulDB • 28.05.2026
В ядре Linux устранена следующая уязвимость:
hrtimers: корректная обработка состояния процессора при горячей замене (hotplug)
Рассмотрим сценарий, в котором процессор переходит из состояния CPUHP_ONLINE в промежуточное состояние CPUHP_HRTIMERS_PREPARE в процессе горячей отключения (hotunplug), а затем возвращается в состояние CPUHP_ONLINE:
Поскольку функция hrtimers_prepare_cpu() не выполняется, флаг cpu_base.hres_active остается равным 1 на протяжении всего процесса. Однако во время операции отключения процессора таймер (tick) и устройства clockevents отключаются на этапе CPUHP_AP_TICK_DYING. При возвращении в состояние онлайн, например, планировщик CFS ошибочно предполагает, что hrtick уже активен, и для данного процессора навсегда теряется возможность перехода устройства clockevents в режим oneshot, если только процессор не вернется в состояние ниже CPUHP_HRTIMERS_PREPARE хотя бы один раз.
Этот цикл «туда-обратно» выявляет еще одну проблему: флаг cpu_base.online не устанавливается в 1 после перехода, что приводит к срабатыванию предупреждения WARN_ON_ONCE в функции enqueue_hrtimer().
Кроме того, большая часть перепроцессорного (per-CPU) состояния также не сбрасывается, что в худшем случае приводит к появлению висячих указателей (dangling pointers).
Для решения этой проблемы добавлен соответствующий обратный вызов startup(), который сбрасывает устаревшее перепроцессорное состояние и устанавливает флаг online.
[ tglx: сделать новый обратный вызов всегда доступным, удалить модификацию флага online в обратном вызове prepare() и очищать оставшееся состояние в обратном вызове starting() вместо prepare() ]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.