Odebrany

CVE-2026-93100

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

fs/resctrl: Zapobiegaj używaniu po zwolnieniu w rdtgroup_kn_put()

Struktura rdtgroup jest zliczana za pomocą rdtgroup::waitcount. Dzwoniący to
potrzebuję, aby struktura zachowała ważność podczas snu (w oczekiwaniu na uzyskanie
rdtgroup_mutex) pobierz referencję za pomocą rdtgroup_kn_get() i zwolnij ją
rdtgroup_kn_put().

Ścieżka wydania ma służyć jako uwolnienie awaryjne: jeśli liczba
spada do zera i grupa została już oznaczona RDT_DELETED,
rdtgroup_kn_put() zwalnia strukturę.

Wynikające z tego ścieżki zbiorczego usuwania free_all_child_rdtgrp() i rmdir_all_sub()
z katalogu resctrl usuń lub resctrl fs unmount działaj jako podstawowy
freer: przechowują rdtgroup_mutex i zwalniają każdą grupę rdt, której liczba oczekujeń wynosi
zero, w przeciwnym razie ustawiają RDT_DELETED i pozostawiają zwolnienie ostatniemu kelnerowi.

Ci dwaj freerzy ścigają się. rdtgroup_kn_put() zatwierdza Waitcount == 0 za pomocą
atomic_dec_and_test() poza rdtgroup_mutex, następnie odczytuje rdtgroup::flags.
Pomiędzy tymi dwiema operacjami współbieżny obiekt wywołujący free_all_child_rdtgrp()
lub rmdir_all_sub() (która przechowuje muteks) może obserwować Waitcount == 0 przez
atomic_read(), wywołaj rdtgroup_remove() i kfree() strukturę.

Następnie następuje odczyt rdtgroup::flags w rdtgroup_kn_put().
wykorzystanie po-darmowe, a struktura może nawet zostać zwolniona dwukrotnie, jeśli zostanie zwolniona
pamięć spełnia kryteria kontroli flagi RDT_DELETED.

Zastąp samą metodę atomic_dec_and_test() metodą atomic_dec_and_mutex_lock(), aby
że zmniejszenie do zera zajmuje rdtgroup_mutex, zanim licznik stanie się
globalnie widoczne. Następnie inspekcja rdtgroup::flags przebiega w ten sam sposób
mutex przechowywany przez zbiorcze freery, co sprawia, że obie ścieżki wzajemnie się wykluczają.

Typowy przypadek, w którym liczba nie osiąga zera, pozostaje wolny od blokady. Odrocz
kernfs_unbreak_active_protection() do czasu usunięcia muteksu
Aktywne zabezpieczenia kernfs funkcjonalnie otaczają rdtgroup_mutex. Usuń zasób
group, która z kolei porzuca odniesienie do kernfs po wyłączeniu ochrony kernfs
przywrócony.

[ bp: Podziel komunikaty zatwierdzeń na mniejsze, łatwiejsze do przeanalizowania akapity. ]

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