CVE-2026-97478
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
virt: acrn: Napraw irqfd use-after-free podczas zamykania eventfd
acrn_irqfd_design() i przebudzenie eventfd EPOLLHUP mogą się ścigać i są bezpłatne
ta sama struktura hsm_irqfd:
Procesor0 Procesor1
---- ----
wydarzeniefd_release()
wake_up_poll(EPOLLHUP)
hsm_irqfd_wakeup()
kolejka_praca(&irqfd->zamknięcie)
acrn_irqfd_design()
hsm_irqfd_shutdown()
lista_del_init()
wydarzeniefd_ctx_remove_wait_queue()
wydarzeniefd_ctx_put()
kfree(irqfd)
hsm_irqfd_shutdown_work()
kontener_of(praca, ..., zamknięcie)
irqfd->vm <--użyj po zwolnieniu
Ścieżka deprzypisania zwolniła irqfd, podczas gdy element roboczy zamykania był zamknięty
już umieszczony w kolejce przez EPOLLHUP (lub odwrotnie), więc element pracy może
wskrzesić wiszący wskaźnik za pomocą pojemnika_of().
Przejdź na model dożywotni używany przez KVM irqfds:
- Deprzypisz/deinit tylko dezaktywuj irqfd: usuń go z vm->irqfds
pod irqfds_lock i wstaw do kolejki prace porządkowe.
- hsm_irqfd_shutdown_work() staje się jedynym właścicielem, który odczepia plik
eventfd waitqueue, usuwa odwołanie do eventfd i zwalnia plik
irqfd.
- Nowy bit HSM_IRQFD_FLAG_SHUTDOWN chroniony przez test_and_set_bit()
gwarantuje, że prace porządkowe zostaną umieszczone w kolejce najwyżej raz, niezależnie od ich liczby
z {EPOLLHUP, de przypisanie, deinit} uruchom jednocześnie. To jest bezpieczne
wywołanie zwrotne z kolejki oczekującej, które działa z wstrzymaniem wqh->lock i
Przerwania IRQ są wyłączone i dlatego nie mogą przyjąć irqfds_lock.
- acrn_irqfd_design() opróżnia vm->irqfd_wq przed powrotem, więc
eventfd jest całkowicie odłączony po powrocie. Acrn_irqfd_deinit() dezaktywuje
każde irqfd opróżnia kolejkę roboczą i dopiero potem ją niszczy, więc nie
ścieżka może kolejkować_work() na zburzoną kolejkę roboczą.
- acrn_irqfd_sign() instaluje teraz wpis kolejki oczekującej eventfd i
publikuje irqfd w vm->irqfds pod irqfds_lock, więc irqfd jest
nigdy nie jest widoczne do usunięcia/deinitowania przed wejściem do kolejki oczekującej
miejsce i każdy EPOLLHUP, który zostanie uruchomiony w kolejkach okna przypisania
prace porządkowe, które blokują irqfds_lock do czasu zakończenia publikacji.
>_ 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