CVE-2026-89790: ipv6: avoid divide by zero in rt6_multipath_rebalance

Published Sep 16, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

ipv6: avoid divide by zero in rt6multipathrebalance

rt6multipathrebalance() calculates the total eligible nexthop weight in one pass and programs upper bounds in a second pass. Since RTMNEWROUTE is RTNL-free, a concurrent ignorerouteswithlinkdown update can make the first pass return zero while the second sees an eligible nexthop, causing rt6upperboundset() to divide by zero.

UBSAN: division-overflow in net/ipv6/route.c:4845:17 Oops: divide error: 0000 [#1] SMP KASAN NOPTI rt6upperboundset() net/ipv6/route.c:4845 rt6multipathrebalance() fib6addrt2node() ip6routemultipathadd() inet6rtmnewroute()

Skip upper-bound calculation when the first pass reports a zero total. This respects the lock-free performance considerations here and solves insecure scenarios.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 16, 2026
CVE Published
via MITRE·08:48 AM
Data Sourced
via MITRE·08:48 AM
Description

Frequently Asked Questions

1

What conditions are required to trigger this issue?

The issue requires concurrent route activity: an RTM_NEWROUTE operation must race with an update to ignore_routes_with_linkdown. The first multipath nexthop pass must see no eligible weight, while the second pass sees an eligible nexthop.

2

What is the observable impact if the race occurs?

The kernel can divide by zero in rt6_upper_bound_set() during IPv6 multipath route rebalancing. Reported symptoms include a UBSAN division-overflow report and an Oops caused by a divide error.

3

What mitigation is available if the fix cannot be applied immediately?

The provided data identifies the triggering race between RTM_NEWROUTE and ignore_routes_with_linkdown updates, but does not provide a supported configuration-only mitigation. Reducing or avoiding concurrent execution of those operations may avoid the described race, but this is not stated as a complete workaround.

4

How can administrators identify that they have encountered this vulnerability?

Look for UBSAN division-overflow reports in net/ipv6/route.c at rt6_upper_bound_set(), or kernel Oops messages reporting a divide error with rt6_upper_bound_set(), rt6_multipath_rebalance(), fib6_add_rt2node(), ip6_route_multipath_add(), and inet6_rtm_newroute() in the call stack.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203