Odebrany

CVE-2026-99061

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

Wi-Fi: brcmfmac: napraw wyścig usuwania urządzeń P2P w brcmf_detach()

Gdy sterownik zostanie usunięty podczas tworzenia procesu przestrzeni użytkownika
urządzenie P2P (np. wpa_supplicant) nadal wychodzi, urządzenie P2P
interfejs jest usuwany dwukrotnie, a jądro ulega awarii.

Te dwie ścieżki to:

- wpa_supplicant przy wyjściu wysyła NL80211_CMD_DEL_INTERFACE dla P2P
urządzenie. nl80211_del_interface() przechowuje RTNL i mutex Wiphy oraz
wywołuje brcmf_p2p_del_vif(), która wyłącza wykrywanie i czeka do
1,5 s dla BRCMF_E_IF_DEL. Następnie wywołuje funkcję brcmf_remove_interface(),
co wyrejestrowuje wdev i zwalnia vif i ifp.

- brcmf_detach() wyłącza magistralę, więc BRCMF_E_IF_DEL nigdy nie dotrze,
i wywołuje brcmf_remove_interface(ifp, false) dla tego samego ifp.
brcmf_p2p_ifp_removed() czyta ifp->vif i następnie blokuje
rtnl_lock(). Kiedy brcmf_p2p_del_vif() zwalnia RTNL, wywołuje
cfg80211_unregister_wdev() na wdevie, który był już niezarejestrowany
i uwolniony.

Druga funkcja list_del_rcu() wdev->list Failure na LIST_POISON2:

brcmfmac: brcmf_p2p_del_vif usuń P2P vif
brcmfmac: brcmf_p2p_deinit_discovery wprowadź
brcmfmac: brcmf_p2p_del_vif P2P: status GO_NEG_PHASE wyczyszczony
brcmfmac: brcmf_detach Wprowadź
brcmfmac: brcmf_bus_change_state 1 -> 0
brcmfmac: brcmf_remove_interface Wprowadź, bsscfgidx=1, ifidx=0
brcmfmac: brcmf_del_if Enter, bsscfgidx=1, ifidx=0
brcmfmac: brcmf_p2p_ifp_removed P2P: usunięto interfejs urządzenia
[1,5 s później, upłynął limit czasu brcmf_p2p_del_vif()]
brcmfmac: brcmf_remove_interface Wprowadź, bsscfgidx=1, ifidx=0
brcmfmac: brcmf_del_if Enter, bsscfgidx=1, ifidx=0
brcmfmac: brcmf_p2p_ifp_removed P2P: usunięto interfejs urządzenia
Nie można obsłużyć żądania stronicowania jądra pod adresem wirtualnym dead000000000122
Błąd wewnętrzny: Ups: 96000044 [#1] PREEMPT_RT SMP
komputer: _cfg80211_unregister_wdev+0x6c/0x264 [cfg80211]
Śledzenie połączeń:
_cfg80211_unregister_wdev+0x6c/0x264 [cfg80211]
cfg80211_unregister_wdev+0x10/0x1c [cfg80211]
brcmf_p2p_ifp_removed+0x84/0xb0 [brcmfmac]
brcmf_remove_interface+0x1f4/0x254 [brcmfmac]
brcmf_detach+0x88/0x180 [brcmfmac]
brcmf_sdio_remove+0x90/0x7b0 [brcmfmac]
brcmf_sdiod_remove+0x20/0xa0 [brcmfmac]
brcmf_ops_sdio_remove+0xbc/0x12c [brcmfmac]
sdio_bus_remove+0x38/0x144
urządzenie_release_driver_internal+0x1e8/0x2c0
Device_release_driver+0x14/0x20
brcmf_sdio_bus_remove+0x2c/0x40 [brcmfmac]
brcmf_fwvid_unregister_vendor+0xd8/0x170 [brcmfmac]
__exit_compat+0x18/0x418 [brcmfmac_cyw]
__arm64_sys_delete_module+0x1ac/0x244

Dziennik został pobrany z debug=0x406 na płycie i.MX 8M Plus z a
CYW55513 (Sona IF513) na SDIO. Sterownikiem jest backport Ezurio
brcmfmac z wersji 6.18.22 na jądrze 5.4-rt. Kod, którego to dotyczy, jest taki sam
w głównym wątku.

Aby odtworzyć:

1. Uruchom wpa_supplicant na wlan0 i pozwól mu się powiązać. Tworzy
Urządzenie P2P (iw dev pokazuje „urządzenie typu P2P”).
2. Zatrzymaj wpa_supplicant i usuń sterownik bez czekania
wpa_supplicant, aby wyjść:

zabij $(pidof wpa_supplicant)
rmmod brcmfmac_cyw brcmfmac

Katastrofa jest odtwarzalna na tej płycie.

W przypadku interfejsu bez Netdev (urządzenie P2P) weź RTNL i
wiphy mutex w brcmf_detach() przed przeczytaniem iflist i usuń go za pomocą
zablokowane = prawda. Jeśli brcmf_p2p_del_vif() zostanie uruchomiona jako pierwsza, brcmf_detach() znajdzie
gniazdo puste. Jeśli brcmf_detach() zostanie uruchomiona jako pierwsza, nl80211 nie znajdzie pliku wdev
więcej. Interfejsy z netdevem zostały usunięte tak jak poprzednio, ponieważ
brcmf_del_if() przyjmuje RTNL jako podstawowy interfejs.

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