UBUNTU-CVE-2026-98598: Medium severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: ipv6: Prevent rt6insertexception() for dying fib6info. Before the cited commit, fib6nhflushexceptions() always set from->exceptionbucketflushed = 1 under rt6exceptionlock to prevent rt6insertexception() from inserting a new exception for a dying fib6info. The flag was replaced with the FIB6EXCEPTIONBUCKETFLUSHED bit stored in nh->rt6iexceptionbucket. The problem is that now the bit is only set when the bucket is not NULL and fib6nhflushexceptions() is called from fib6nhrelease() after fib6ref has already reached zero. If rt6insertexception() is called while the target fib6info is being removed via fib6purgert(), a new exception could be created successfully because rt6flushexceptions() no longer sets the bit. This creates a reference cycle between the fib6info and the exception route, leaking the fib6info, its nexthop device, and all per-CPU routes in fib6nh->rt6ipcpu, which stalls netdev unregistration. [ 34.680602] unregisternetdevice: waiting for gre6 to become free. Usage count = 68 [ 44.920675] unregisternetdevice: waiting for gre6 to become free. Usage count = 68 [ 55.176582] unregisternetdevice: waiting for gre6 to become free. Usage count = 68 Let's call fib6droppcpufrom() before rt6flushexceptions(), to set fib6destroying before rt6exceptionlock, and check f6i->fib6destroying in rt6insertexception(). Note that FIB6EXCEPTIONBUCKETFLUSHED logic is dead and we can clean it up in net-next.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
Which systems are most likely to be affected operationally?
Affected systems are Ubuntu installations using one of the listed Linux kernel packages and IPv6 routing. The observable impact described is stalled network-device unregistration, including repeated "unregister_netdevice: waiting for ... to become free" messages.
What conditions are required for the leak to occur?
The race requires rt6_insert_exception() to run while the target IPv6 fib6_info is being removed through fib6_purge_rt(). Under that condition, a new exception route can be created for a dying route and form a reference cycle.
What resources are leaked if exploitation occurs?
The reference cycle leaks the fib6_info, its nexthop device, and all per-CPU routes in fib6_nh->rt6i_pcpu. This can prevent the associated network device from being released during unregistration.
How can administrators identify a potentially affected system?
Check kernel logs during network-device removal for repeated unregister_netdevice waiting messages and a persistent usage count, such as waits for a gre6 device to become free. These symptoms are consistent with the leaked references described.