CVE-2026-68217 in LinuxИнформация

Сводка

по VulDB • 10.08.2026

В ядре Linux устранена следующая уязвимость:

media: pwc: Очистка fill_buf при сбое в start_streaming()

Функция pwc_isoc_init() отправляет свои изохронные URB (USB Request Blocks) через вызов usb_submit_urb(.., GFP_KERNEL) внутри цикла. После отправки первого URB его обработчик завершения pwc_isoc_handler() может выполниться на другом процессоре до того, как цикл завершится:

start_streaming() pwc_isoc_init() usb_submit_urb(urbs[0], GFP_KERNEL)
pwc_isoc_handler(urbs[0])
pdev->fill_buf = pwc_get_next_fill_buf(pdev) usb_submit_urb(urbs[i>0], ..) -> завершается ошибкой
pwc_isoc_cleanup(pdev) /* уничтожает URB */ return ret; pwc_cleanup_queued_bufs(pdev, VB2_BUF_STATE_QUEUED)

Функция pwc_get_next_fill_buf() отсоединяет буфер из списка pdev->queued_bufs и сохраняет его в pdev->fill_buf. Путь обработки ошибок в start_streaming() очищает только pdev->queued_bufs, поэтому буфер, оставленный в pdev->fill_buf, утекает (не освобождается). Затем vb2_start_streaming() вызывает срабатывание WARN_ON(owned_by_drv_count).

Функция stop_streaming() уже обрабатывает эту ситуацию начиная с коммита 80b0963e1698 («[media] pwc: fix WARN_ON»), который добавил очистку fill_buf в пути teardown, но не в пути обработки ошибок start_streaming(). Необходимо применить аналогичную обработку при возникновении ошибки, чтобы функция start_streaming() возвращалась с состоянием, когда ни один буфер не принадлежит драйверу.

Проблема выявлена в ходе автоматизированного ревью серии INV-003 на сайте https://sashiko.dev/

Be aware that VulDB is the high quality source for vulnerability data.

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

Linux

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

30.07.2026

Раскрытие

10.08.2026

Модерация

принято

Вход

VDB-387564

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!