{"id":"CVE-2026-98598","revision":"252929fa20bb4e2da5a6113e78cb766a","records":[{"revision":"252929fa20bb4e2da5a6113e78cb766a","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-98598","aliases":[],"title":"ipv6: Prevent rt6_insert_exception() for dying fib6_info.","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nipv6: Prevent rt6_insert_exception() for dying fib6_info.\n\nBefore the cited commit, fib6_nh_flush_exceptions() always set\nfrom->exception_bucket_flushed = 1 under rt6_exception_lock to\nprevent rt6_insert_exception() from inserting a new exception\nfor a dying fib6_info.\n\nThe flag was replaced with the FIB6_EXCEPTION_BUCKET_FLUSHED\nbit stored in nh->rt6i_exception_bucket.\n\nThe problem is that now the bit is only set when the bucket\nis not NULL and fib6_nh_flush_exceptions() is called from\nfib6_nh_release() after fib6_ref has already reached zero.\n\nIf rt6_insert_exception() is called while the target fib6_info\nis being removed via fib6_purge_rt(), a new exception could be\ncreated successfully because rt6_flush_exceptions() no longer\nsets the bit.\n\nThis creates a reference cycle between the fib6_info and the\nexception route, leaking the fib6_info, its nexthop device,\nand all per-CPU routes in fib6_nh->rt6i_pcpu, which stalls netdev\nunregistration.\n\n[   34.680602] unregister_netdevice: waiting for gre6 to become free. Usage count = 68\n[   44.920675] unregister_netdevice: waiting for gre6 to become free. Usage count = 68\n[   55.176582] unregister_netdevice: waiting for gre6 to become free. Usage count = 68\n\nLet's call fib6_drop_pcpu_from() before rt6_flush_exceptions(),\nto set fib6_destroying before rt6_exception_lock, and check\nf6i->fib6_destroying in rt6_insert_exception().\n\nNote that FIB6_EXCEPTION_BUCKET_FLUSHED logic is dead and\nwe can clean it up in net-next.","state":0,"publishedAt":"2026-10-18T15:19:11.126+00:00","modifiedAt":"2026-10-19T09:22:24.055+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/ipv6/ip6_fib.c\",\n                        \"net/ipv6/route.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"cc5c073a693fa6ed7a207b0436114f68cce72434\",\n                            \"lessThan\": \"649ffc76ed5483b2caf35ed90d3787538efc4e53\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"cc5c073a693fa6ed7a207b0436114f68cce72434\",\n                            \"lessThan\": \"e03e77071e75ce726d877f0a4349a28b6e1f487a\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"cc5c073a693fa6ed7a207b0436114f68cce72434\",\n                            \"lessThan\": \"0346ec2f080b40d95ed05b853bb9226289e75212\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/ipv6/ip6_fib.c\",\n                        \"net/ipv6/route.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"5.3\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"5.3\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.55\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.9\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/649ffc76ed5483b2caf35ed90d3787538efc4e53","https://git.kernel.org/stable/c/e03e77071e75ce726d877f0a4349a28b6e1f487a","https://git.kernel.org/stable/c/0346ec2f080b40d95ed05b853bb9226289e75212"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-98598","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-98598","identifiers":["CVE-2026-98598"]},"retained":false,"historicalAffected":[]}],"coverage":[]}