CVE-2024-26698 in Linux
Riassunto
di VulDB • 26/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
hv_netvsc: Risolto un race condition tra netvsc_probe e netvsc_remove
Nella commit ac5047671758 ("hv_netvsc: Disable NAPI before closing the VMBus channel"), napi_disable veniva chiamato per tutti i canali, inclusi tutti i subcanali, senza verificare se fossero abilitati o meno.
Ciò causava il blocco di hv_netvsc in napi_disable quando netvsc_probe() aveva terminato l'esecuzione ma nvdev->subchan_work non era ancora iniziato. netvsc_subchan_work() -> rndis_set_subchannel() non ha creato i sub-canali e, di conseguenza, netvsc_sc_open() non è in esecuzione. netvsc_remove() chiama cancel_work_sync(&nvdev->subchan_work), per il quale netvsc_subchan_work non è stato eseguito.
netif_napi_add() imposta il bit NAPI_STATE_SCHED perché garantisce che NAPI non possa essere programmato (scheduled). Successivamente, netvsc_sc_open() -> napi_enable cancella il bit NAPIF_STATE_SCHED, consentendone la programmazione. napi_disable() fa l'opposto.
Ora, durante netvsc_device_remove(), quando viene chiamato napi_disable per tali subcanali, napi_disable rimane bloccato in un msleep infinito.
Questa correzione risolve il problema assicurandosi che napi_disable() non venga chiamata per strutture NAPI non abilitate. Tuttavia, netif_napi_del() è ancora necessaria per queste strutture NAPI non abilitate a scopo di pulizia (cleanup).
Call trace: [ 654.559417] task:modprobe state:D stack: 0 pid: 2321 ppid: 1091 flags:0x00004002
[ 654.568030] Call Trace:
[ 654.571221]
[ 654.573790] __schedule+0x2d6/0x960
[ 654.577733] schedule+0x69/0xf0
[ 654.581214] schedule_timeout+0x87/0x140
[ 654.585463] ? __bpf_trace_tick_stop+0x20/0x20
[ 654.590291] msleep+0x2d/0x40
[ 654.593625] napi_disable+0x2b/0x80
[ 654.597437] netvsc_device_remove+0x8a/0x1f0 [hv_netvsc]
[ 654.603935] rndis_filter_device_remove+0x194/0x1c0 [hv_netvsc]
[ 654.611101] ? do_wait_intr+0xb0/0xb0
[ 654.615753] netvsc_remove+0x7c/0x120 [hv_netvsc]
[ 654.621675] vmbus_remove+0x27/0x40 [hv_vmbus]
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.