CVE-2026-89971
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
nvme: pomiń aktualizację limitów strefowych, jeśli zapytanie o informacje o strefie nie powiodło się
nvme_query_zone_info() zwraca ujemną wartość errno lub wartość dodatnią
Kod stanu NVMe, ale nvme_update_ns_info_block() testuje tylko dla
przypadek negatywny:
ret = nvme_query_zone_info(ns, lbaf, &zi);
jeśli (ret < 0)
wyjść;
Jeśli urządzenie ulegnie awarii, zidentyfikuj przestrzeń nazw (specyficzne dla zestawu poleceń we/wy)
polecenie lub polecenie Identyfikuj kontroler wydane przez
nvme_set_max_append(), pozytywny status przechodzi i jest konfigurowany
kontynuuje z zerową inicjalizacją informacji o strefie. nvme_update_zone_info()
następnie zaznacza kolejkę w strefie z chunk_sectors i ns->head->zsze ustawionym na
zero.
blk_validate_zoned_limits() nie sprawdza chunk_sectors, więc limity
zatwierdzenie się powiodło. blk_revalidate_disk_zones() odrzuca strefę zerową
rozmiar, ale do tego czasu limity są aktywne i nic ich nie cofa, więc
We/wy są nadal przesyłane do kolejki strefowej o zerowym rozmiarze strefy i
disc_zone_no() przesuwa się o ilog2(0):
nvme0n1: Nieprawidłowy brak potęgi rozmiaru dwóch stref (0)
UBSAN: przesunięcie poza zakres w include/linux/blkdev.h:747:16
wykładnik przesunięcia -1 jest liczbą ujemną
disc_zone_no include/linux/blkdev.h:747 [wbudowane]
bio_straddles_zones include/linux/blkdev.h:1058 [w linii]
blk_zone_wplug_handle_write block/blk-zoned.c:1423 [w wierszu]
blk_zone_plug_bio.cold+0x25/0x1c8 block/blk-zoned.c:1605
blk_mq_submit_bio+0x18fb/0x2870 blok/blk-mq.c:3196
Submit_bh_wbc+0x575/0x740 fs/buffer.c:2824
__block_write_full_folio+0x728/0xdd0 fs/buffer.c:1933
Dowolne urządzenie, oprogramowanie układowe lub obiekt docelowy NVMe-oF, w przypadku którego wykonanie jednego polecenia nie powiedzie się
osiąga to.
W takim przypadku pomiń aktualizację limitów strefowych i zarejestruj, który z nich
coś się wydarzyło: podczas ponownej walidacji kolejka utrzymuje strefę
geometry, z którą był ostatnio sprawdzany, i przy pierwszym skanowaniu przestrzeni nazw
jest zarejestrowany bez ograniczeń strefowych, dzięki czemu jest nadal dostępny jako
uchwyt dla poleceń administratora. Żadna ze ścieżek
nvme_query_zone_info(), które zwracają pozytywny status, rejestrują wszystko, więc
w przeciwnym razie awaria byłaby cicha.
zi.zone_size to dokładny wskaźnik: każda ścieżka zwracająca wartość dodatnią
status powraca przed jego przypisaniem, a po nim jedyna awaria
po lewej stronie jest -ENODEV, które osoba wywołująca już obsługuje.
Znalezione przez FuzzNvme.
>_ 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