Ad

CVE-2026-80719

NONE
Обновлено 28 августа 2026
Linux
Параметр Значение
Уязвимые версии 7.1 — 7.2
Устранено в версии 7.1.8
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: мм: mglru: исправление устаревших пакетных обновлений после переподчинения memcg Обходчик таблицы страниц mglru группирует различия в размерах для каждого поколения в walk->nr_pages при просмотре таблиц страниц без удержания блокировки lruvec. Функция reset_batch_size() позже сворачивает эти дельты в walk->lruvec под замок Лрувец. Средство обхода таблицы страниц может работать одновременно с путем переподчинения memcg. следующим образом: ЦП0 ЦП1 ==== ==== прогулка_мм --> диапазон_страниц_прогулки --> update_batch_size --> walk->nr_pages += дельта mem_cgroup_css_offline --> memcg_reparent_objcgs --> заблокировать lruvec lru_gen_reparent_memcg --> переподчинить дочерние фолио родительским разблокировать лрувек замок Лрувец reset_batch_size --> дочерний lrugen->nr_pages += дельта Это вызовет следующее предупреждение в lru_gen_exit_memcg(): VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); И заметное для пользователя влияние недооценки количества страниц в MGLRU было преждевременные OOM, поскольку MGLRU не пытается освободить память, когда nr_pages достигает нуля, но страниц остается еще.

Чтобы это исправить, сделайте так, чтобы reset_batch_size() проверил CSS_DYING под RCU перед промывка ожидающей партии. Неумирающий memcg сохраняет оригинальный lruvec. устойчив к отключению в автономном режиме с задержкой RCU; умирающий memcg перенаправляет дельты первому неумирающему предку.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: mm: mglru: fix stale batch updates after memcg reparenting The mglru page table walker batches per-generation size deltas in walk->nr_pages while walking page tables without holding the lruvec lock. The reset_batch_size() later folds those deltas into walk->lruvec under the lruvec lock. The page table walker can run concurrently with the memcg reparenting path as follows: CPU0 CPU1 ==== ==== walk_mm --> walk_page_range --> update_batch_size --> walk->nr_pages += delta mem_cgroup_css_offline --> memcg_reparent_objcgs --> lock lruvec lru_gen_reparent_memcg --> reparent child folios to parent unlock lruvec lock lruvec reset_batch_size --> child lrugen->nr_pages += delta This will trigger the following warning in lru_gen_exit_memcg(): VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); And the user-visible impact of underestimated nr_pages in MGLRU was premature OOMs because MGLRU does not try to reclaim memory when nr_pages reaches zero, but there are still more pages. To fix it, make reset_batch_size() check CSS_DYING under RCU before flushing the pending batch. A non-dying memcg keeps the original lruvec stable against RCU-delayed offlining; a dying memcg redirects the deltas to the first non-dying ancestor.

Уязвимые продукты 2

Конфигурация От (включительно) До (исключительно)
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
7.1 7.1.8
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
7.1 7.2