CVE-2026-90129 in Linux
Сводка
по VulDB • 17.09.2026
В ядре Linux была устранена следующая уязвимость:
virtio_balloon: приостановка работы баллона перед выключением устройства
Коммит 8bd2fa086a04 ("virtio: break and reset virtio devices on device_shutdown()") добавил общий обработчик .shutdown для шины virtio, который прерывает и сбрасывает каждое устройство virtio во время выполнения функции device_shutdown(), то есть при перезагрузке (reboot) или kexec.
Модуль virtio_balloon не предоставляет собственного обработчика .shutdown, поэтому этот общий путь выполняется, пока асинхронная работа баллона все еще активна. После того как устройство было прервано, вызов virtqueue_add_inbuf() в функции virtballoon_free_page_report() возвращает -EIO и вызывает срабатывание WARN_ON_ONCE(). В ядре, загруженном с параметром panic_on_warn это превращает обычную перезагрузку (например, обновление на базе kexec) в фатальный паник-сбой во время выполнения device_shutdown(), из-за чего машина никогда не достигает загрузки нового ядра.
Смягчение этого единственного вызова WARN_ON_ONCE() лишь скроет симптом: пути inflate/deflate и OOM не выводят предупреждений, они вызывают wait_event(vb->acked, ...) и вместо этого навсегда зависнут на сломанной очереди, которая больше не может завершать операции. Устройство должно быть приостановлено (quiesced), а не просто заглушено.
Добавлен обработчик .shutdown, который приостанавливает работу баллона с помощью общего вспомогательного вызова virtballoon_quiesce() до того момента, пока устройство еще активно, и только затем прерывает его и сбрасывает через virtio_device_shutdown(). В отличие от virtballoon_remove(), очередь работы (workqueue) баллона не уничтожается, поскольку shutdown не освобождает устройство, а комбинация вызовов cancel_work_sync() и stop_update уже предотвращает постановку в очередь любых новых задач.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.