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

Сводка

по VulDB • 20.07.2026

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

nvme-pci: исправлена ошибка use-after-free в функции nvme_free_host_mem()

Функция nvme_free_host_mem() освобождает память, на которую указывает dev->hmb_sgt, через вызов dma_free_noncontiguous(), но после этого не обнуляет указатель. Это приводит к ошибке use-after-free при повторном вызове nvme_free_host_mem() в том же пути обработки ошибок.

Такая ситуация может возникнуть во время выполнения nvme_probe(), когда nvme_setup_host_mem() успешно выделяет память для HMB (устанавливая dev->hmb_sgt), но nvme_set_host_mem() завершается с ошибкой ввода-вывода:

nvme_setup_host_mem() nvme_alloc_host_mem_single() -> устанавливает dev->hmb_sgt nvme_set_host_mem() -> завершается с ошибкой -EIO nvme_free_host_mem() -> освобождает hmb_sgt, но НЕ обнуляет его возврат ошибки

Путь обработки ошибок в nvme_probe(): nvme_free_host_mem() -> dev->hmb_sgt содержит устаревшее значение (stale), возникает use-after-free

Второй вызов разыменовывает уже освобожденную структуру sgt, что приводит к разыменованию нулевого указателя в функции iommu_dma_free_noncontiguous() при обращении к sgt->sgl->dma_address (поддерживающая память была освобождена и очищена до нуля).

Проблему можно воспроизвести на устройствах NVMe, подключенных через Thunderbolt (например, OWC Envoy Express за док-станцией Dell WD22TB4), где устройство периодически возвращает ошибки ввода-вывода во время настройки HMB из-за нестабильности соединения PCIe.

BUG: kernel NULL pointer dereference, address: 0000000000000010 RIP: 0010:iommu_dma_free_noncontiguous+0x22/0x80 Call Trace: <TASK> dma_free_noncontiguous+0x3b/0x130 nvme_free_host_mem+0x30/0xf0 [nvme]
nvme_probe.cold+0xcc/0x275 [nvme]
local_pci_probe+0x43/0xa0 pci_device_probe+0xeea/0x290 really_probe+0xf9/0x3b0 __driver_probe_device+0x8b/0x170 driver_probe_device+0x24/0xd0 __driver_attach_async_helper+0x6b/0x110 async_run_entry_fn+0x37/0x170 process_one_work+0x1ac/0x3d0 worker_thread+0x1b8/0x360 kthread+0xf7/0x130 ret_from_fork+0x2d8/0x3a0 ret_from_fork_asm+0x1a/0x30 </TASK>

Исправление заключается в установке значения dev->hmb_sgt равным NULL после его освобождения, чтобы второй вызов использовал путь обработки множественных дескрипторов (multi-descriptor path), который безопасно обрабатывает уже очищенное состояние.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

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

Linux

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

19.07.2026

Раскрытие

19.07.2026

Модерация

принято

Вход

VDB-380284

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!