In the Linux kernel, the following vulnerability has been resolved:
ipv6: prevent infinite loop in rt6nlmsgsize()
While testing prior patch, I was able to trigger an infinite loop in rt6nlmsgsize() in the following place:
listforeachentryrcu(sibling, &f6i->fib6siblings, fib6siblings) { rt6nhnlmsgsize(sibling->fib6nh, &nexthop_len); }
This is because fib6delroute() and fib6addrt2node() uses listdelrcu(), which can confuse rcu readers, because they might no longer see the head of the list.
Restart the loop if f6i->fib6_nsiblings is zero.