Odebrany

CVE-2026-90206

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

nvmet: naprawiono wyścig max_qid pomiędzy plikami konfiguracyjnymi a alokacją kontrolera

Funkcja nvmet_subsys_attr_qid_max_store() może się z nią ścigać
nvmet_alloc_ctrl() w przypadku modyfikacji limitu max_qid podsystemu.

Załóżmy, że max_qid wynosi obecnie 64. Jeśli zostanie wykonana funkcja nvmet_alloc_ctrl():
ctrl->sqs = kzalloc_objs(struct nvmet_sq *, subsys->max_qid + 1);
i dokładnie w tym momencie proces przestrzeni użytkownika zmienia max_qid na 128,
nvmet_subsys_attr_qid_max_store() ustawi nową wartość max_qid. To
próbuje usunąć aktywne kontrolery, aby wymusić ponowne połączenie, ale plik
nowy kontroler nie zostanie usunięty, ponieważ nie został dodany do
subsys->lista ctrls jeszcze.

nvmet_alloc_ctrl() następnie kontynuuje i dodaje nowy kontroler do
subsys->lista ctrls. Później, gdy zostanie wywołana funkcja nvmet_install_queue(), zostanie to wywołane
zobaczy max_qid ustawione na 128, ale pamięć przydzielona dla sqs to tylko
rozmiar na 64 wpisy. Skutkuje to ostrzeżeniem KASAN poza boiskiem
i potencjalne uszkodzenia pamięci.

Napraw ten problem, chroniąc przydziały kolejek i wstawianie list
nvmet_alloc_ctrl() z down_read(&nvmet_config_sem). Ponieważ
nvmet_subsys_attr_qid_max_store() pobiera down_write(&nvmet_config_sem)
aby zmodyfikować atrybut, bezpiecznie uniemożliwia to programowi piszącemu configfs
modyfikowanie max_qid podczas tworzenia kontrolera.

Skopiuj max_qid z podsystemu do struktury kontrolera
podczas alokacji; ctrl->max_qid nigdy się nie zmienia, dopóki
kontroler pozostaje w stanie NA ŻYWO, więc zapobiegnie to podobnym wyścigom
warunki.

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