From: Paolo Abeni <pab...@redhat.com> Date: Wed, 20 Feb 2019 18:18:12 +0100
> When a netdevice is unregistered, we flush the relevant exception > via rt6_sync_down_dev() -> fib6_ifdown() -> fib6_del() -> fib6_del_route(). > > Finally, we end-up calling rt6_remove_exception(), where we release > the relevant dst, while we keep the references to the related fib6_info and > dev. Such references should be released later when the dst will be > destroyed. > > There are a number of caches that can keep the exception around for an > unlimited amount of time - namely dst_cache, possibly even socket cache. > As a result device registration may hang, as demonstrated by this script: ... > Fixes: 93531c674315 ("net/ipv6: separate handling of FIB entries from dst > based routes") > Signed-off-by: Paolo Abeni <pab...@redhat.com> Applied and queued up for -stable, thanks.