CVE-2026-89956
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
s390/vfio-ap: Napraw brakującą blokadę wymaganą do uzyskania dostępu do listy obiektów ap_matrix_mdev
Aby przeglądać lub dodawać/usuwać obiekty ap_matrix_mdev w pliku
matrix_dev->mdev_list, muteks matrix_dev->guests_lock musi być zachowany.
Istnieją dwie funkcje, które uzyskują dostęp do listy bez trzymania muteksu:
funkcja vfio_ap_mdev_probe
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Funkcja vfio_ap_mdev_probe używa matrix_dev->mdevs_lock
mutex, aby chronić dodanie nowo utworzonego obiektu ap_matrix_mdev do pliku
matrix_dev->mdev_list. Ten muteks nie chroni dostępu do listy; jego cel
ma chronić przed równoczesnym dostępem do pól zawartych w pliku
obiekt ap_matrix_mdev. Może to prowadzić do uszkodzenia pamięci jądra lub
use-after-free, jeśli jednocześnie tworzony lub usuwany jest inny mdev.
Dodanie obiektu ap_matrix_mdev do matrix_dev->mdev_list
jest teraz chroniony przez matrix_dev->guests_lock, który jest poprawny
sposób ochrony przed równoczesnym dostępem mdev_list.
Usunięto także następujące dwa wiersze kodu, ponieważ matrix_mdev to
przydzielane za pomocą makra vfio_alloc_device, które używa kzalloc, więc req_trigger
i cfg_chg_trigger są już zainicjowane zerem, gdy struktura jest
przydzielone przed wywołaniem vfio_register_emulated_iommu_dev. To
zapobiega wyświetlaniu okna, w którym te wyzwalacze są ustawiane na NULL po
urządzenie jest wystawione na działanie przestrzeni użytkownika.
matrix_mdev->req_trigger = NULL;
matrix_mdev->cfg_chg_trigger = NULL;
funkcja vfio_ap_mdev_for_queue
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Funkcja status_show obsługująca wyświetlanie atrybutu statusu
urządzenia w /sys/bus/ap/devices wywołują vfio_ap_mdev_for_queue
funkcja, która iteruje matrix_dev->mdev_list w celu znalezienia obiektu
reprezentujący urządzenie kolejki, którego status ma zostać wyświetlony. Aby
przeglądając tę listę, należy zachować muteks matrix_dev->guests_lock.
Aby rozwiązać ten problem, przed pobraniem pobierany jest muteks gości_lock
mutex matrix_dev->mdevs_lock w funkcji status_show. Jest podjęte
tam zamiast funkcji vfio_ap_mdev_for_queue - gdzie to jest
potrzebne - ponieważ aby to zrobić, należy je pobrać przed muteksem mdevs_lock
przestrzegaj właściwej kolejności zamykania i zapobiegaj rozpryskom blokady; także
ponieważ potrzebny jest tam mdevs_lock, aby uzyskać dostęp do pól w środku
obiekt matrix_mdev w tej funkcji.
Zobacz plik vfio-ap-locking.rst w drzewie jądra Linuksa.
>_ 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