CVE-2026-90430 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
iommu/tegra241-cmdqv: Публиковать LVCMDQ только после его полной инициализации
Функция tegra241_vintf_init_lvcmdq() сохраняет указатель на недавно выделенный vcmdq в массиве vintf->lvcmdqs[] до того, как функция tegra241_vcmdq_alloc_smmu_cmdq() сформирует структуру vcmdq->cmdq. Обработчик прерываний об ошибок (ISR) обращается к этому cmdq; поэтому срабатывание зафиксированной ошибки LVCMDQ (например, унаследованной после kexec) в этом окне времени приведет к тому, что функция tegra241_vintf0_handle_error() передаст еще не инициализированный (обнуленный) arm_smmu_cmdq функции __arm_smmu_cmdq_skip_err(), что вызовет разыменование нулевых указателей на регистры очереди.
Исключите сохранение из tegra241_vintf_init_lvcmdq() и публикуйте vcmdq в конце процесса выделения, используя smp_store_release(), который парится с smp_load_acquire() в ISR, что позволяет увидеть полностью сформированный LVCMDQ или NULL.
Выделение LVCMDQ, управляемое пользователем (user-owned), перемещается соответственно: vcmdq публикуется после успешного завершения работы tegra241_vcmdq_hw_init_user(), используя обычное сохранение (plain store), поскольку массив lvcmdqs[] пользовательского VINTF не имеет читателей без блокировок — обработчик прерываний об ошибок работает только с массивом VINTF0.
Once again VulDB remains the best source for vulnerability data.