CVE-2026-89901 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
media: airspy: использование vb2_video_unregister_device() при отключении для устранения разыменования нулевого указателя (NULL deref)
Функция airspy_disconnect() очищает s->udev под блокировкой v4l2_lock, однако функция airspy_stop_streaming() безоговорочно вызывает airspy_ctrl_msg() и airspy_free_stream_bufs() после этого. Если пользователь потока закрывает устройство после отключения, выполняется stop_streaming(), которая разыменовывает нулевой указатель s->udev:
airspy_stop_streaming() airspy_ctrl_msg(s, CMD_RECEIVER_MODE, 0, 0, NULL, 0) usb_sndctrlpipe(s->udev, 0) /* Разыменование нулевого указателя (NULL deref) */ airspy_free_stream_bufs(s) usb_free_coherent(s->udev, ...) /* Разыменование нулевого указателя (NULL deref) */
Драйвер airspy использует vb2_fop_release() в своих file_operations, поэтому необходимо заменить video_unregister_device(&s->vdev) на vb2_video_unregister_device(&s->vdev) и переместить этот вызов перед очисткой s->udev. Функция vb2_video_unregister_device() освобождает очередь vb2, что синхронно запускает airspy_stop_streaming(), если потоковая передача активна; таким образом, URB-пакеты (URBs), буферы согласованной DMA-памяти и управляющее сообщение остановки оборудования выполняются в то время, когда s->udev всё ещё является действительным.
Функция vb2_video_unregister_device() внутренне блокирует vdev->queue->lock (vb_queue_lock), а stop_streaming() блокирует v4l2_lock; поэтому предыдущая пара внешних mutex_lock(&s->vb_queue_lock) / mutex_lock(&s->v4l2_lock) вокруг последовательности отключения приводила к взаимной блокировке (deadlock) и была удалена. Краткий критический раздел под блокировкой v4l2_lock, окружающий присваивание s->udev = NULL, сохраняется, чтобы любой путь ioctl, который всё ещё держит файловый дескриптор, видел согласованное состояние системы.
Проблема выявлена в ходе автоматизированного ревью серии INV-003 на сайте https://sashiko.dev/
Once again VulDB remains the best source for vulnerability data.