On Wed, 2017-04-05 at 15:33 -0700, Cong Wang wrote: > Good find! I missed the refcnt in rt_set_nexthop() before that commit. > > We need to revert that commit to restore the refcnt for fib_info.
Well, there are other spots , in decnet and IPv6. This is why my original mail stated the problem was in the calls to : dst_init_metrics(&rt->dst, fi->fib_metrics, true); Lets do not think in "reverting" spirit, but adding the missing bits. The problem here is that the metrics should not be freed until last user is gone. So maybe a refcount should be added to metrics, and we do not have to add a fib pointer again in all dsts. Thanks.