Odebrany

CVE-2026-98999

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

drm/xe: Napraw nieaktualny wpis pinned_link, gdy fb-pin wykonuje ostateczne odpięcie

xe_bo_pin_external() i xe_bo_unpin_external() obsługują bo
członkostwo w liście pinned_link w xe->pinned.late.external, na podstawie
czy bieżące połączenie jest najbardziej zewnętrznym pinem, czy ostatnim odpięciem.
Można jednak również zwiększyć liczbę pin_count tego samego zewnętrznego bo
obniżane bezpośrednio przez __xe_pin_fb_vma()/__xe_unpin_fb_vma(), które przypinają
bo jako bufor skanowania wyświetlacza bez przechodzenia
xe_bo_pin_external()/xe_bo_unpin_external() i nie mają
pojęcie lub własność pinned_link.

Jeśli bo jest przypięty zarówno zewnętrznie (np. eksport dma-buf), jak i jako fb,
a zewnętrzne odpięcie następuje najpierw, poprawnie xe_bo_unpin_external().
obserwuje pin_count > 1 i pozostawia bo na pinned_link. Kiedy na fb
unpin później wykonuje prawdziwe ostatnie odpięcie (liczba pinów 1 -> 0), nigdy
dotyka pinned_link, pozostawiając bo połączone na xe->pinned.late.external
na czas nieokreślony. Po zwolnieniu bo, ten nieaktualny wpis na liście
wskazuje na zwolnioną pamięć, uszkadzając listę i ryzykując:
użyj po zwolnieniu przy następnym przeglądaniu lub łączeniu listy.

Strony przypinania/odpinania obiektów kopii zapasowej w xe_bo_notifier_prepare_pinned()/
xe_bo_notifier_unprepare_pinned() mają tę samą charakterystykę obejścia,
chociaż nigdy nie dodają swojego bo do przypiętej listy, więc nie ma to na to wpływu
przez ten konkretny problem z uszkodzeniem list.

Przenieś usuwanie pinned_link do xe_bo_account_unpin(), które już
działa na każdej ścieżce odpinania (jądro, zewnętrzne, bufor ramki, kopia zapasowa
obiekt) tuż przed prawdziwym przejściem 1 -> 0 pin_count. Od
list_del_init() działa tylko na samym węźle, to usunięcie polega na tym
niezależny od list i bezpieczny do wykonania niezależnie od tego, która lista (external
lub kernel_bo_present) bo jest połączone, lub jaki kod
path wykonuje ostateczne odpięcie. Porzuć zbędne teraz wyraźne
list_del_init() wywołuje funkcje xe_bo_unpin_external() i xe_bo_unpin().

wersja 2:
- Nowa łatka

v3:
- Bazuje na zmianach z poprzedniej łatki.

(wiśnia wybrana z zatwierdzenia ca58d36a1f93af586ee93b340c9f9fd81312cc01)

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