In the Linux kernel, the following vulnerability has been resolved:
geneve: Fix use-after-free in genevefinddev().
syzkaller reported a use-after-free in genevefinddev() [0] without repro.
geneveconfigure() links struct genevedev.next to netgeneric(net, genevenetid)->genevelist.
The net here could differ from devnet(dev) if IFLANETNSPID, IFLANETNSFD, or IFLATARGET_NETNSID is set.
When devnet(dev) is dismantled, geneveexitbatchrtnl() finally calls unregisternetdevicequeue() for each dev in the netns, and later the dev is freed.
However, its geneve_dev.next is still linked to the backend UDP socket netns.
Then, use-after-free will occur when another geneve dev is created in the netns.
Let's call genevedellink() instead in genevedestroy_tunnels().
BUG: KASAN: slab-use-after-free in geneve_configure+0x234/0x858 drivers/net/geneve.c:1343 Read of size 2 at addr ffff000054d6ee24 by task syz.1.4029/13441
CPU: 1 UID: 0 PID: 13441 Comm: syz.1.4029 Not tainted 6.13.0-g0ad9617c78ac #24 dc35ca22c79fb82e8e7bc5c9c9adafea898b1e3d Hardware name: linux,dummy-virt (DT) Call trace: showstack+0x38/0x50 arch/arm64/kernel/stacktrace.c:466 (C) dumpstack lib/dumpstack.c:94 [inline] dumpstacklvl+0xbc/0x108 lib/dumpstack.c:120 printaddressdescription mm/kasan/report.c:378 [inline] printreport+0x16c/0x6f0 mm/kasan/report.c:489 kasanreport+0xc0/0x120 mm/kasan/report.c:602 _asanreportload2noabort+0x20/0x30 mm/kasan/reportgeneric.c:379 genevefinddev drivers/net/geneve.c:1295 [inline] geneveconfigure+0x234/0x858 drivers/net/geneve.c:1343 genevenewlink+0xb8/0x128 drivers/net/geneve.c:1634 rtnlnewlinkcreate+0x23c/0x868 net/core/rtnetlink.c:3795 _rtnlnewlink net/core/rtnetlink.c:3906 [inline] rtnlnewlink+0x1054/0x1630 net/core/rtnetlink.c:4021 rtnetlinkrcvmsg+0x61c/0x918 net/core/rtnetlink.c:6911 netlinkrcvskb+0x1dc/0x398 net/netlink/afnetlink.c:2543 rtnetlinkrcv+0x34/0x50 net/core/rtnetlink.c:6938 netlinkunicastkernel net/netlink/afnetlink.c:1322 [inline] netlinkunicast+0x618/0x838 net/netlink/afnetlink.c:1348 netlinksendmsg+0x5fc/0x8b0 net/netlink/afnetlink.c:1892 socksendmsgnosec net/socket.c:713 [inline] _socksendmsg net/socket.c:728 [inline] _syssendmsg+0x410/0x6f8 net/socket.c:2568 _syssendmsg+0x178/0x1d8 net/socket.c:2622 _syssendmsg net/socket.c:2654 [inline] _dosyssendmsg net/socket.c:2659 [inline] _sesyssendmsg net/socket.c:2657 [inline] _arm64syssendmsg+0x12c/0x1c8 net/socket.c:2657 _invokesyscall arch/arm64/kernel/syscall.c:35 [inline] invokesyscall+0x90/0x278 arch/arm64/kernel/syscall.c:49 el0svccommon+0x13c/0x250 arch/arm64/kernel/syscall.c:132 doel0svc+0x54/0x70 arch/arm64/kernel/syscall.c:151 el0svc+0x4c/0xa8 arch/arm64/kernel/entry-common.c:744 el0t64synchandler+0x78/0x108 arch/arm64/kernel/entry-common.c:762 el0t64sync+0x198/0x1a0 arch/arm64/kernel/entry.S:600
Allocated by task 13247: kasansavestack mm/kasan/common.c:47 [inline] kasansavetrack+0x30/0x68 mm/kasan/common.c:68 kasansaveallocinfo+0x44/0x58 mm/kasan/generic.c:568 poisonkmallocredzone mm/kasan/common.c:377 [inline] _kasankmalloc+0x84/0xa0 mm/kasan/common.c:394 kasankmalloc include/linux/kasan.h:260 [inline] _dokmallocnode mm/slub.c:4298 [inline] _kmallocnodenoprof+0x2a0/0x560 mm/slub.c:4304 _kvmallocnodenoprof+0x9c/0x230 mm/util.c:645 allocnetdevmqs+0xb8/0x11a0 net/core/dev.c:11470 rtnlcreatelink+0x2b8/0xb50 net/core/rtnetlink.c:3604 rtnlnewlinkcreate+0x19c/0x868 net/core/rtnetlink.c:3780 _rtnlnewlink net/core/rtnetlink.c:3906 [inline] rtnlnewlink+0x1054/0x1630 net/core/rtnetlink.c:4021 rtnetlinkrcvmsg+0x61c/0x918 net/core/rtnetlink.c:6911 netlinkrcvskb+0x1dc/0x398 net/netlink/afnetlink.c:2543 rtnetlinkrcv+0x34/0x50 net/core/rtnetlink.c:6938 netlinkunicastkernel net/netlink/af_n ---truncated---
[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9593172d93b9f91c362baec4643003dc29802929",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-0bc88647",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@788dbca056a8783ec063da3c9d49a3a71c76c283",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-0e332d44",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da9b0ae47f084014b1e4b3f31f70a0defd047ff3",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-0f549e49",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5e86e27de0936f3cb0a299ce519d993e9cf3886",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-163f0f8c",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f74f6560146714241c6e167b03165ee77a86e316",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-257fb4fd",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f74f6560146714241c6e167b03165ee77a86e316",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-28fa0152",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"258617602006244621740921859855715245551",
"289648213326329410456304890558319976416"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@788dbca056a8783ec063da3c9d49a3a71c76c283",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-2f0460fe",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"85570003766526654305153446467208672749",
"29038614342788014117640273368025495904"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@904e746b2e7fa952ab8801b303ce826a63153d78",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-5e040e2a",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ce92ca990cfac88a87c61df3cc0b5880e688ecf",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-7663917c",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"258617602006244621740921859855715245551",
"289648213326329410456304890558319976416"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9593172d93b9f91c362baec4643003dc29802929",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-a0ed2811",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"85570003766526654305153446467208672749",
"29038614342788014117640273368025495904"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5e86e27de0936f3cb0a299ce519d993e9cf3886",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-ba800640",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"258617602006244621740921859855715245551",
"289648213326329410456304890558319976416"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da9b0ae47f084014b1e4b3f31f70a0defd047ff3",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-bc4a3288",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"85570003766526654305153446467208672749",
"29038614342788014117640273368025495904"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@904e746b2e7fa952ab8801b303ce826a63153d78",
"target": {
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-c0232c21",
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"95022243203921690389877755212637232851",
"139502454423679222129246887403247425051",
"260979446260748000740152828535466317027",
"76090513906713469871090512139978689304",
"42640538171207067740726745100414635407",
"216439170968360984315221155142216070872",
"258617602006244621740921859855715245551",
"289648213326329410456304890558319976416"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3ce92ca990cfac88a87c61df3cc0b5880e688ecf",
"target": {
"function": "geneve_destroy_tunnels",
"file": "drivers/net/geneve.c"
},
"id": "CVE-2025-21858-d1dc72f6",
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1",
"digest": {
"length": 433.0,
"function_hash": "53758849050503476841774717287791795840"
}
}
]