Odebrany

CVE-2026-97525

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

x86/mm/pat: Przydzielaj podzielone tabele stron jako tabele stron jądra

PTE jest przydzielany bezpośrednio, bez konieczności przeglądania standardowej tabeli stron
procedury alokacji (takie jak pte_alloc_one_kernel()), gdy kod CPA
dzieli dużą stronę (__split_large_page()).

Oznacza to, że konstruktor tabeli stron nigdy nie jest wywoływany, podobnie jak tablica stron
oznaczona jako tabela stron jądra.

W pierwszym przypadku folio powiązane z tabelą stron nie jest obecne
oznaczona jako tabela stron (__pagetable_ctor() nigdy nie jest wywoływana, więc też nie
__folio_set_pgtable()) ani statystyki nie są aktualizowane w celu odzwierciedlenia
to (lruvec_stat_add_folio() nigdy nie jest wywoływane).

Ten ostatni problem polega na braku oznaczenia tabeli stron jako strony jądra
table (ptdesc_set_kernel() nigdy nie jest wywoływana) jest znacznie bardziej problematyczne.

Od zatwierdzenia:

5ba2f0a15564 („mm: wprowadź odroczone zwalnianie dla tabel stron jądra”)

Zwalnianie tabeli stron jądra zostało wsadowe i od tego czasu
kolejne zatwierdzenie:

e37d5a2d60a3 („iommu/sva: unieważnij nieaktualne wpisy IOTLB dla przestrzeni adresowej jądra”)

Wpisy pamięci podręcznej IOTLB dla tabel stron jądra zostały unieważnione
będąc uwolnionym.

Ponieważ tabele stron podzielonych są zwalniane bez tego unieważnienia, plik IOTLB
mogą zawierać dla nich nieaktualne wpisy.

Rozwiąż problem, korzystając ze zwykłego interfejsu API alokacji PTE w między czasie.

Powoduje to, że te tablice stron jądra wywołują konstruktor tabeli stron,
i dlatego wymaga destruktora tablicy stron.

Destruktory nie zawsze są obecne, jak w przypadku wcześniej przydzielonej mapy bezpośredniej
tabele stron). Warunkowo wywołaj pagetable_dtor_free(), jeśli PG_table
flaga folio dla ptdesc jest ustawiona, w przeciwnym razie zwalniamy tabelę stron poprzez
pagetable_free().

Niezależnie od tego, którą ścieżką podążają tablice stron oznaczone jako tablice stron jądra,
który zawiera teraz tabele stron podzielonych, wybierz właściwą drogę
pagetable_free_kernel().

Widoczny dla użytkownika jest efekt uboczny polegający na pojawieniu się podzielonych tabel stron
w nr_page_table_pages w /proc/vmstat (podobnie jak inne tabele stron jądra
przydzielane po wczesnym uruchomieniu), jednak jest to pozytywna zmiana.

Ten problem zaczął być znacznie problematyczny po zatwierdzeniu:

5ba2f0a15564 („mm: wprowadź odroczone zwalnianie dla tabel stron jądra”)

więc wybierz to jako cel poprawek.

[ dhansen: przeformułuj w trybie rozkazującym ]

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