Odebrany

CVE-2026-98414

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ę:

memcg: unikaj ładowania głównego memcg z obj_cgroup_charge_pages()

obj_cgroup_charge_pages() przekształca objcg w jego memcg i wywołuje
try_charge_memcg(), która nie powoduje zwarcia głównego memcg. To
memcg może być głównym memcg: obj_cgroup_is_root() odzwierciedla memcg
objcg został stworzony dla i nigdy nie jest aktualizowany, podczas gdy memcg_reparent_objcgs()
przekierowuje objcg->memcg do elementu nadrzędnego w katalogu rmdir. Obiekt umierania
dlatego dziecko root przepuszcza każdy filtr obj_cgroup_is_root() ale
trafia do głównego memcg.

Folio przechowuje obiekty, którymi został obciążony, więc jest łatwo do niego dotrzeć
poprzez zswap: przydziel pamięć anon w grupie c, przenieś zadanie, usuń
cgroup, następnie napisz do pamięci root cgroup.reclaim. Odzyskane
folio są ładowane przez przetworzony obiekt i trafiają do
refill_stock() z głównym memcg:

OSTRZEŻENIE: mm/memcontrol.c:2198 w refill_stock+0x644/0x940
uzupełnienie_stock+0x644/0x940
try_charge_memcg+0x12d6/0x1570
__obj_cgroup_charge+0x35/0xf0
obj_cgroup_charge+0x1de/0x210
obj_cgroup_charge_zswap+0x83/0x270
zswap_store+0x1620/0x2000
swap_writeout+0x94c/0x14c0
kurczyć_folio_list+0x3388/0x52b0
[...]
try_to_free_mem_cgroup_pages+0x30d/0x830
user_proactive_reclaim+0x504/0x840
odzyskanie_pamięci+0x1f/0x30

Poza ostrzeżeniem opłata jest asymetryczna: obj_cgroup_uncharge_pages()
pomija refill_stock() dla memcg root, więc licznik stron roota rośnie
i nigdy nie jest rozładowany. Nie jest widoczny dla użytkownika, ponieważ jest nim prąd pamięci
nie jest odsłonięty na korzeniu, ale jest to wyciek.

Użyj funkcji try_charge(), która wraca wcześniej do głównego memcg, przywracając plik
symetria z obj_cgroup_uncharge_pages().

Powyższa sekwencja została napisana skryptem w samodzielnym odtwarzaczu (zswap włączony,
zamień na dysku virtio, 512 MB pamięci anon uległo uszkodzeniu w dziecku
głównej grupy c, zadanie zostało następnie przeniesione do głównej grupy c, czyli elementu podrzędnego
usunięty, a następnie „echo 600M swappiness=max > memory.reclaim” na stronie
root) i uruchomić na maszynie wirtualnej CONFIG_DEBUG_VM=y. Odwzorowuje ikonę na
pierwszy sklep zswap ponownie przydzielonego folio, z tym samym łańcuchem wywołań co plik
raport. Po zastosowaniu tej łatki ikona zniknęła podczas sklepu zswap
licznik w trakcie przebiegu pozostaje niezmieniony, więc nadal wykonywana jest ta sama ścieżka.
Autotesty cgroup test_zswap, test_kmem i test_memcontrol nie wykazują żadnych nowych wyników
niepowodzenia.

>_ 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