In the Linux kernel, the following vulnerability has been resolved:
hv_netvsc: Fix panic during namespace deletion with VF
The existing code move the VF NIC to new namespace when NETDEVREGISTER is received on netvsc NIC. During deletion of the namespace, defaultdeviceexitbatch() >> defaultdeviceexitnet() is called. When netvsc NIC is moved back and registered to the default namespace, it automatically brings VF NIC back to the default namespace. This will cause the defaultdeviceexitnet() >> foreachnetdev_safe loop unable to detect the list end, and hit NULL ptr:
[ 231.449420] mana 7870:00:00.0 enP30832s1: Moved VF to namespace with: eth0 [ 231.449656] BUG: kernel NULL pointer dereference, address: 0000000000000010 [ 231.450246] #PF: supervisor read access in kernel mode [ 231.450579] #PF: errorcode(0x0000) - not-present page [ 231.450916] PGD 17b8a8067 P4D 0 [ 231.451163] Oops: Oops: 0000 [#1] SMP NOPTI [ 231.451450] CPU: 82 UID: 0 PID: 1394 Comm: kworker/u768:1 Not tainted 6.16.0-rc4+ #3 VOLUNTARY [ 231.452042] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 11/21/2024 [ 231.452692] Workqueue: netns cleanupnet [ 231.452947] RIP: 0010:defaultdeviceexitbatch+0x16c/0x3f0 [ 231.453326] Code: c0 0c f5 b3 e8 d5 db fe ff 48 85 c0 74 15 48 c7 c2 f8 fd ca b2 be 10 00 00 00 48 8d 7d c0 e8 7b 77 25 00 49 8b 86 28 01 00 00 <48> 8b 50 10 4c 8b 2a 4c 8d 62 f0 49 83 ed 10 4c 39 e0 0f 84 d6 00 [ 231.454294] RSP: 0018:ff75fc7c9bf9fd00 EFLAGS: 00010246 [ 231.454610] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 61c8864680b583eb [ 231.455094] RDX: ff1fa9f71462d800 RSI: ff75fc7c9bf9fd38 RDI: 0000000030766564 [ 231.455686] RBP: ff75fc7c9bf9fd78 R08: 0000000000000000 R09: 0000000000000000 [ 231.456126] R10: 0000000000000001 R11: 0000000000000004 R12: ff1fa9f70088e340 [ 231.456621] R13: ff1fa9f70088e340 R14: ffffffffb3f50c20 R15: ff1fa9f7103e6340 [ 231.457161] FS: 0000000000000000(0000) GS:ff1faa6783a08000(0000) knlGS:0000000000000000 [ 231.457707] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 231.458031] CR2: 0000000000000010 CR3: 0000000179ab2006 CR4: 0000000000b73ef0 [ 231.458434] Call Trace: [ 231.458600] <TASK> [ 231.458777] opsundolist+0x100/0x220 [ 231.459015] cleanupnet+0x1b8/0x300 [ 231.459285] processonework+0x184/0x340
To fix it, move the ns change to a workqueue, and take rtnllock to avoid changing the netdev list when defaultdeviceexitnet() is using it.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/38xxx/CVE-2025-38683.json",
"cna_assigner": "Linux"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-38683.json"
[
{
"id": "CVE-2025-38683-34c70ce8",
"digest": {
"function_hash": "28078587512848609712860988061541351273",
"length": 649.0
},
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/netvsc_drv.c",
"function": "netvsc_remove"
}
},
{
"id": "CVE-2025-38683-428f1be8",
"digest": {
"function_hash": "150512472579100469029346090471705853177",
"length": 462.0
},
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/netvsc_drv.c",
"function": "netvsc_suspend"
}
},
{
"id": "CVE-2025-38683-81b72d47",
"digest": {
"function_hash": "177113860240051089095547391097669765006",
"length": 2622.0
},
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/netvsc_drv.c",
"function": "netvsc_probe"
}
},
{
"id": "CVE-2025-38683-af98f258",
"digest": {
"function_hash": "242302564592237680536847373015709631625",
"length": 647.0
},
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/netvsc_drv.c",
"function": "netvsc_netdev_event"
}
},
{
"id": "CVE-2025-38683-c005df7b",
"digest": {
"line_hashes": [
"180421799421604273537593141136988893353",
"31829811795177553854183732604731306693",
"313333360458740207565229175145892828513",
"44673666593744080207202927972886224712",
"95163352828607154852881085377659636286",
"315344356080333003194812554963256640230",
"336788567082276724986600658610619228106",
"14967718253586790109777595839543639621",
"143652817971879508843944080549086667861",
"315344356080333003194812554963256640230",
"7343574430345590149411545934879185041",
"335963146141715938371737368922200366349",
"337805611074232558889134743657342576636",
"183101508285504048762784623735421864983",
"230431282788197221790765563817261907478",
"323565761987653814375599688555921665939",
"26550326273232103038630677290590481912",
"106557579689011168525415049858103503311",
"85418523633628282479800071559832043751",
"106780779104139150389449301514545870442",
"101260515896355055814968013101950629974",
"309931531253950879993718263980583062272"
],
"threshold": 0.9
},
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/netvsc_drv.c"
}
},
{
"id": "CVE-2025-38683-cc845fc8",
"digest": {
"line_hashes": [
"143344546796586301919131273564133423925",
"216823341684952286791663468228206092770",
"177920985818568928579650954070668291294",
"249040738472697826402529666045797960293",
"13439114405749884248779392871372220358",
"339598257403154049116439930200998060993",
"118296204986697193911527406324352911598"
],
"threshold": 0.9
},
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5276896e6923ebe8c68573779d784aaf7d987cce",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/net/hyperv/hyperv_net.h"
}
}
]