CVE-2024-40950 in LinuxИнформация

Сводка

по VulDB • 12.07.2026

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

mm: huge_memory: исправлено некорректное использование функции mapping_large_folio_support() для анонимных folio-объектов (anon folios)

При проведении теста разделения больших folio-объектов был сгенерирован предупреждающий вывод "[ 5059.122759][ T166] Cannot split file folio to non-0 order". Однако тестовые случаи предназначены только для анонимных folio-объектов, тогда как функция mapping_large_folio_support() применима исключительно к folio-объектам файлового кэша.

В функции split_huge_page_to_list_to_order(), в качестве аргумента для mapping_large_folio_support() может передаваться анонимный folio-объект (anonmous folio). Проверка через folio_test_anon() отсутствует, что приводит к неудачному разделению больших прозрачных страниц (THP) с атрибутом anon. Аналогичная ситуация наблюдается и в shmem_mapping(). Необходимо добавить проверку для обоих случаев. Однако вызов shmem_mapping() внутри __split_huge_page__() не затрагивается, так как для анонимных folio-объектов параметр end устанавливается равным -1, вследствие чего условие (head[i].index >= end) всегда ложно, и функция shmem_mapping() не вызывается.

Также в функцию mapping_large_folio_support() добавлен макрос VM_WARN_ON_ONCE() для анонимных отображений (anon mapping), что позволяет легче выявлять случаи неправильного использования данной функции.

Folio-объекты THP могут присутствовать в файловом кэше даже в том случае, если файловая система не поддерживает большие folio-объекты. Это связано с тем, что при включенной конфигурации CONFIG_TRANSPARENT_HUGEPAGE процесс khugepaged пытается объединять (collapse) страницы, поддерживаемые файлами и доступные только для чтения, в THP. Однако само отображение на самом деле корректно не поддерживает большие folio-объекты многоуровневого порядка (multi order large folios).

Для проверки этого поведения использовался файл /sys/kernel/debug/split_huge_pages. С данным патчем большое анонимное THP успешно разделяется, а предупреждающее сообщение исчезает.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

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

Linux

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

12.07.2024

Раскрытие

12.07.2024

Модерация

принято

Вход

VDB-271221

EPSS

0.00208

KEV

Нет

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

Очень низкий

Источники

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!