CVE-2024-26698: hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove
In the Linux kernel, the following vulnerability has been resolved:
hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove
In commit ac5047671758 ("hv_netvsc: Disable NAPI before closing the
VMBus channel"), napi_disable was getting called for all channels,
including all subchannels without confirming if they are enabled or not.
This caused hv_netvsc getting hung at napi_disable, when netvsc_probe()
has finished running but nvdev->subchan_work has not started yet.
netvsc_subchan_work() -> rndis_set_subchannel() has not created the
sub-channels and because of that netvsc_sc_open() is not running.
netvsc_remove() calls cancel_work_sync(&nvdev->subchan_work), for which
netvsc_subchan_work did not run.
netif_napi_add() sets the bit NAPI_STATE_SCHED because it ensures NAPI
cannot be scheduled. Then netvsc_sc_open() -> napi_enable will clear the
NAPIF_STATE_SCHED bit, so it can be scheduled. napi_disable() does the
opposite.
Now during netvsc_device_remove(), when napi_disable is called for those
subchannels, napi_disable gets stuck on infinite msleep.
This fix addresses this problem by ensuring that napi_disable() is not
getting called for non-enabled NAPI struct.
But netif_napi_del() is still necessary for these non-enabled NAPI struct
for cleanup purpose.
Call trace:
[ 654.559417] task:modprobe state:D stack: 0 pid: 2321 ppid: 1091 flags:0x00004002
[ 654.568030] Call Trace:
[ 654.571221] <TASK>
[ 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]
Security readout for executives and security teams
Plain-English summary
CVE-2024-26698 is a Linux kernel reliability bug in the Hyper-V network driver. A race during device startup and removal can leave a system task stuck, affecting availability of affected Linux guests using hv_netvsc. Sources do not show active exploitation or a CVSS score.
Executive priority
Treat as a production availability issue, not an emergency based on current evidence. Patch during the next kernel maintenance window, faster for business-critical Linux workloads on Hyper-V networking.
Technical view
The hv_netvsc driver can call napi_disable() on subchannel NAPI structures that were added but not enabled. During a race between netvsc_probe() and netvsc_remove(), this can hang indefinitely in msleep during netvsc_device_remove(). Stable kernel commits adjust cleanup so napi_disable() is not called for non-enabled NAPI objects.
Likely exposure
Exposure is most likely on Linux systems running as Hyper-V/VMBus guests and using the hv_netvsc network driver. Systems not using hv_netvsc are unlikely to be affected. Exact exposure depends on kernel version and distribution backports.
Exploitation context
The provided sources describe a timing-dependent kernel race during probe/remove handling, not a remote attack path. CISA KEV is false in the bundle, and no cited source reports active exploitation. Triggering appears tied to device or driver lifecycle operations.
Researcher notes
No CVSS, CWE, or exploitation details are provided in the bundle. The fix is source-level and backported across stable kernel branches. Validate affected status through distro kernel changelogs because vendors may backport fixes without changing major kernel versions.
Mitigation direction
Apply Linux vendor kernel updates containing the referenced stable fixes.
Review Debian LTS guidance if running Debian LTS kernels.
Prioritize Hyper-V/VMBus Linux guests using hv_netvsc.
Until patched, avoid unnecessary hv_netvsc device removal, reload, or hot-unplug operations.
Validation and detection
Inventory Linux guests that load hv_netvsc or hv_vmbus.
Compare running kernels with distribution advisories and referenced stable commits.
Confirm the fixed kernel is booted, not only installed.
Review logs for netvsc_remove, napi_disable, or D-state modprobe hangs.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-26698 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.