Odebrany

CVE-2026-98050

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

mlxsw: widmo_ptp: Naprawiono wywołanie napi_gro_receive() z kontekstu kolejki roboczej GC

Obecnie funkcja mlxsw_sp1_ptp_ht_gc_collect() jest uruchamiana z PTP
kolejka robocza zbierania śmieci, a nie kontekst ankiety NAPI. Dla każdego
wywołuje niedopasowane wpisy PTP zawierające SKB
mlxsw_sp1_ptp_unmatched_finish() -> mlxsw_sp1_ptp_packet_finish(). Dla
pakietów przychodzących, wywołuje to funkcję mlxsw_sp_rx_listener_no_mark_func(). Koniec
tej funkcji jest następująca:

skb->protocol = eth_type_trans(skb, skb->dev);
napi_gro_receive(mlxsw_skb_cb(skb)->rx_md_info.napi, skb);

Wskaźnik napi to taki, który został umieszczony w bloku kontrolnym SKB, gdy
W kontekście NAPI odebrano uwięziony pakiet. Później, kiedy GC zbierze plony
niedopasowany wpis (do MLXSW_SP1_PTP_HT_GC_TIMEOUT później), wywołanie
napi_gro_receive() mutuje listę GRO instancji NAPI, co jest niebezpieczne
jeśli ankieta jest uruchomiona jednocześnie na innym procesorze.

W mlxsw_sp1_ptp_ht_gc_collect() wywoływana jest funkcja local_bh_disable(), aby zapobiec
softirq, ale dotyczy to tylko lokalnego procesora. Dodatkowo,
jego komentarz jest nieaktualny. Stwierdza, że mlxsw_sp1_ptp_unmatched_finish()
wywołuje funkcję netif_receive_skb(). Nie jest to dokładne od
przywołane zatwierdzenie; ta poprawka sprawia, że ​​ten komentarz znów jest trafny.
mlxsw_pci_napi_devs_init() wywołuje funkcję netif_threaded_enable() na NAPI RX
net_device bez żadnych warunków. Ankieta instancji NAPI, która może być
odbywający się równolegle z GC, odbywa się według niezależnego harmonogramu
kthread, który może znajdować się na innym procesorze. Wywołanie funkcji local_bh_disable()
tego nie chroni.

Jeśli limit czasu tx-timestamp generuje niedopasowany wpis (co można łatwo
odtwarzane poprzez uruchomienie ptp4l i oczekiwanie na port, który dotrze do
stan UNCALIBRATED/SLAVE), podczas gdy wątek NAPI będący właścicielem znajduje się w środku
ankietę na innym procesorze, obie strony jednocześnie mutują listę GRO, ponieważ
pokazane poniżej:

[39.846] port 1 (swp1): MASTER na NIEKALIBROWANY na RS_SLAVE
list_add korupcja. next->prev powinno być prev (ffff8d620faf4138), ale było ffff8d624150f700. (następny=ffff8d620faf4138).
BŁĄD jądra w lib/list_debug.c:29!
Ups: nieprawidłowy kod operacji: 0000 [#1] SMP PTI
Procesor: 1 UID: 0 PID: 539 Comm: napi/mlxsw_rx-0 Nieskażony 6.18.48 #1-NixOS PREEMPT (leniwy)
Nazwa sprzętu: Mellanox Technologies Ltd. MSN2410/VMOD0001, BIOS 4.6.5 13.09.2018
RIP: 0010:__list_add_valid_or_report+0x79/0xb0
RSP: 0018:ffffcdf8c0f27c08 EFLAGS: 00010246
RAX: 0000000000000075 RBX: ffff8d624150fd00 RCX: 00000000000000000
RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff8d6315d1e540
RBP: ffff8d620faf4070 R08: 0000000000000000 R09: 00000000ffffdfff
R10: ffffffffa5c60fe0 R11: ffffcdf8c0f27ab8 R12: 0000000000000003
R13: 000000000000003d R14: 00000000000001bc R15: 0000000000000001
FS: 0000000000000000(0000) GS:ffff8d636f63f000(0000) knlGS:00000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000562689a60c24 CR3: 000000015f224004 CR4: 00000000001726f0
Zadzwoń do śledzenia:
<ZADANIE>
gro_receive_skb+0xee/0x230
mlxsw_sp1_ptp_got_packet+0x61/0x140 [mlxsw_spectrum]
mlxsw_core_skb_receive+0xdf/0x1b0 [mlxsw_core]
mlxsw_pci_napi_poll_cq_rx+0x780/0x9d0 [mlxsw_pci]
__napi_poll+0x31/0x1e0
napi_threaded_poll_loop+0x16b/0x1c0
napi_threaded_poll+0x71/0xa0
kthread+0xfb/0x260
ret_from_fork+0x22d/0x260
ret_from_fork_asm+0x1a/0x30
</ZADANIE>
Panika jądra – brak synchronizacji: krytyczny wyjątek w przerwaniu

Mechanizm prowadzący do paniki jądra nie został zmieniony
6.18.48 i linia główna.

Ta poprawka dodaje pomocnika dostarczania danych przychodzących dla funkcji PTP package_finish()
ścieżka wywołująca funkcję netif_receive_skb() zamiast napi_gro_receive().
netif_receive_skb(), w przeciwieństwie do napi_gro_receive(), można wywołać z zewnątrz
kontekstu odpytywania instancji NAPI, który może wystąpić w witrynie wywołania
tę ścieżkę. Księgowanie statystyk RX i przypisanie skb->dev nadal pozostają
zachowane; jedyną zmianą jest samo wezwanie dostawy.

To usuwa GR
---obcięty---

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