Odebrany

CVE-2026-98225

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

mm/shrinker: napraw fałszywą set_shrinker_bit() za pomocą cgroup.memory=nokmem

W przypadku cgroup.memory=nokmem funkcja Shunder_memcg_alloc() kończy się wcześniej i
nigdy nie przydziela identyfikatora, więc lesser->id zachowuje 0 otrzymane od
kzalloc() w kurczacz_alloc(). __list_lru_init() następnie kopiuje to 0 do
lru->shrinker_id, gdzie wygląda na prawidłowy indeks bitowy.

Nic też nie wywołuje funkcji Expand_shrinker_info() na nokmem, więc Shriner_nr_max
pozostaje 0 i każdy memcg kończy się pustą mapą (map_nr_max == 0).

deferred_split_folio() niezależnie od tego przekazuje prawdziwy memcg do __list_lru_add()
tego, czy lru wie o memcg, więc pierwszy THP znalazł się w kolejce w grupie
wykonuje set_shrinker_bit(memcg, nid, 0) i uruchamia kontrolę granic:

OSTRZEŻENIE: mm/shrinker.c:212 w set_shrinker_bit+0x7d/0x90, CPU#126
Zadzwoń do śledzenia:
<ZADANIE>
odroczony_split_folio+0x18c/0x220
map_anon_folio_pmd_nopf+0xdd/0x130
map_anon_folio_pmd_pf+0x14/0xb0
do_huge_pmd_anonymous_page+0x1a1/0x620
__handle_mm_fault+0xea9/0x10d0
handle_mm_fault+0xe5/0x320
do_user_addr_fault+0x1cc/0x870
exc_page_fault+0x81/0x1b0
asm_exc_page_fault+0x27/0x30
</ZADANIE>

Nieszkodliwa, funkcja WARN_ON_ONCE() utrzymuje odczyt jednostki poza granicami
przed zdarzeniem, ale identyfikator nie powinien przede wszystkim wyglądać na prawidłowy.
Wyczyść to przed powrotem.

Można to zamazać w dwóch innych miejscach: upuść identyfikator w __list_lru_init()
kiedy nokmem wyłącza memcg_aware lub sprawia, że deferred_split_folio() przechodzi
NULL, tak jak robi to list_lru_add_obj(). Obydwa pozostawiają opcję zmniejszania->id w pobliżu
dla następnego dzwoniącego, więc napraw to tam, gdzie jest wydawany identyfikator.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org