Ad

CVE-2026-72213

HIGH CVSS 3.1: 7,1 EPSS 0.16%
Обновлено 17 августа 2026
Linux
Параметр Значение
CVSS 7,1 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: mm/hugetlb: исправлено несоответствие заряда/разряда rsvd группы огромных tlb. В alloc_hugetlb_folio() один указатель h_cg используется как для rsvd, так и для и сборы cgroup, не связанные с rsvd Hugetlb. Когда установлена карта_chg, Hugetlb_cgroup_charge_cgroup_rsvd() сохраняет заряженную контрольную группу в h_cg, но следующая за ним огромная tlb_cgroup_charge_cgroup() перезаписывает h_cg с указателем cgroup, отличным от rsvd.

В результате Hugetlb_cgroup_commit_charge_rsvd() сохраняет неправильные данные. (не rsvd) указатель cgroup на слот rsvd фолио. Когда позже фолио освобождается, функция free_huge_folio() безоговорочно вызывает оба огромных tlb_cgroup_uncharge_folio() и Hugetlb_cgroup_uncharge_folio_rsvd(). Rsvd uncharge считывает неправильная контрольная группа из фолио и уменьшает счетчик, которого никогда не было взимается плата за эту контрольную группу, что приводит к опустошению page_counter: переполнение page_counter: -512 nr_pages=512 ВНИМАНИЕ: mm/page_counter.c:61 на странице_counter_cancel.

Исправьте это, добавив отдельный указатель h_cg_rsvd исключительно для Путь оплаты rsvd, сохраняя полную независимость платежей rsvd и не-rsvd через их пути зарядки, фиксации и разгрузки по ошибке.

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

In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch In alloc_hugetlb_folio(), a single h_cg pointer is used for both the rsvd and non-rsvd hugetlb cgroup charges. When map_chg is set, hugetlb_cgroup_charge_cgroup_rsvd() stores the charged cgroup in h_cg, but the immediately following hugetlb_cgroup_charge_cgroup() overwrites h_cg with the non-rsvd cgroup pointer. As a result, hugetlb_cgroup_commit_charge_rsvd() stores the wrong (non-rsvd) cgroup pointer into the folio's rsvd slot. When the folio is later freed, free_huge_folio() unconditionally calls both hugetlb_cgroup_uncharge_folio() and hugetlb_cgroup_uncharge_folio_rsvd(). The rsvd uncharge reads back the wrong cgroup from the folio and decrements a counter that was never charged for that cgroup, causing a page_counter underflow: page_counter underflow: -512 nr_pages=512 WARNING: mm/page_counter.c:61 at page_counter_cancel Fix this by introducing a separate h_cg_rsvd pointer exclusively for the rsvd charge path, keeping the rsvd and non-rsvd charges fully independent through their charge, commit, and error uncharge paths.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1