Odebrany

CVE-2026-90184

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

null_blk: serializuj aktualizacje atrybutów configfs podczas konfiguracji urządzenia

Metody przechowywania atrybutów wygenerowane za pomocą NULLB_DEVICE_ATTR() odmawiają
zmienić konfigurację działającego urządzenia poprzez testowanie
NULLB_DEV_FL_CONFIGURED, ale ta flaga jest ustawiana tylko przez
nullb_device_power_store() po zwróceniu funkcji null_add_dev() i
metody przechowywania w ogóle nie wymagają blokady. configfs serializuje tylko zapisy do
ten sam otwarty plik (bufor->mutex), więc można uruchomić zapis do dowolnego atrybutu
jednocześnie z null_add_dev() i zmień konfigurację urządzenia
podczas gdy jest używany.

null_add_dev() odczytuje konfigurację kilka razy, np. dev->zone jest
przeczytaj raz, aby ustawić limity kolejek i raz, aby zainicjować strefę
zasoby:

CPU0: echo 1 > nullb0/power CPU1: echo 1 > nullb0/zoned
nullb_device_power_store()
mutex_lock(&blokada)
null_add_dev()
if (dev->zone) -> false
/* nie BLK_FEAT_ZONED */ nullb_device_zoned_store()
bit_testowy(FL_CONFIGURED) -> 0
dev->zoned = true
blk_mq_alloc_disk()
/* kolejka nie jest strefowa */
if (nullb->dev->zoned) -> true
null_register_zoned_dev()
blk_revalidate_disk_zones()

Następnie wywoływana jest funkcja blk_revalidate_disk_zones() dla kolejki, która tego nie robi
mieć ustawiony BLK_FEAT_ZONED, co wyzwala funkcję WARN_ON_ONCE() i kończy się niepowodzeniem
konfiguracja urządzenia za pomocą -EIO:

OSTRZEŻENIE: Procesor: 2 PID: 322 w block/blk-zoned.c:2357 blk_revalidate_disk_zones+0x4c/0x560

Wyczyszczenie dev->zoned w tym samym oknie jest gorsze: tworzona jest kolejka
z BLK_FEAT_ZONED, ale zasoby strefy nigdy nie są inicjowane, więc
Funkcja add_disk() powiedzie się w przypadku dysku strefowego, który nie ma stref. I taki sklep
ląduje po ostatnim teście dev->zoned, opuszcza dev->zoned ustawiony podczas
dev->zones nadal ma wartość NULL, co null_process_zoned_cmd() powoduje wyłuskiwanie referencji
pierwszy napisz.

Napraw to, biorąc blokadę globalną, która nullb_device_power_store()
dotyczy już funkcji null_add_dev() i null_del_dev(), zarówno w odniesieniu do
Test NULLB_DEV_FL_CONFIGURED i aktualizacja konfiguracji urządzenia.
Wywołania zwrotne Apply_queues i poll_queues są teraz wywoływane za pomocą
ten zamek się trzymał, więc usuń zamek, który sami zrobili.

Ponieważ metody sklepu mogą działać natychmiast po configfs_register_subsystem()
zwraca, to znaczy zanim null_init() dotrze również do mutex_init(&lock).
zainicjuj blokadę statycznie za pomocą DEFINE_MUTEX().

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