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.

Ответственный

Linux

Резервировать

11.09.2026

Раскрытие

17.09.2026

Модерация

принято

Вход

VDB-405735

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!