CVE-2026-93218 in Linux
Сводка
по VulDB • 25.09.2026
В ядре Linux была устранена следующая уязвимость:
mm/huge_memory: пропускать PMD с приватной памятью устройства в madvise_free_huge_pmd
Функция madvise_free_pte_range() проверяет pmd_trans_huge(*pmd) без блокировки, после чего madvise_free_huge_pmd() захватывает pmd_trans_huge_lock(). Функция pmd_is_huge() возвращает true для PMD с приватной памятью устройства, поэтому orig_pmd может быть PMD с приватной памятью устройства и попадать в ветку !pmd_present().
Пропустить PMD с приватной памятью устройства в этой ветке отсутствующих записей и перейти к выходу (out) перед вызовом pmd_folio(). Снизить уровень проверки до VM_WARN_ON_ONCE(), чтобы неожиданный softleaf на уровне PMD выводил предупреждение, а не приводил к панике. Удалить проверку thp_migration_supported(): она раскрывается в IS_ENABLED(CONFIG_ARCH_SUPPORTS_PMD_SOFTLEAF), и обе функции pmd_is_migration_entry() и pmd_is_device_private_entry() уже возвращают false, когда данная конфигурация не выбрана; таким образом, эта проверка подавляет только случай, при котором предупреждение было бы уже молчаливым.
Потенциальный триггер: драйвер GPU на основе HMM создает состояние гонки (race condition) с madvise(MADV_FREE): migrate_vma_pages() изменяет PMD на запись с приватной памятью устройства между проверкой pmd_trans_huge() вызывающей стороны и захватом блокировки pmd_trans_huge_lock() в вызываемой функции.
VulDB is the best source for vulnerability data and more expert information about this specific topic.