On 10/27/18 12:02 PM, Jeff Barnhill wrote: > @@ -275,6 +356,11 @@ int __ipv6_dev_ac_inc(struct inet6_dev *idev, const > struct in6_addr *addr) > err = -ENOMEM; > goto out; > } > + err = ipv6_add_acaddr_hash(dev_net(idev->dev), addr); > + if (err) { > + aca_put(aca); > + goto out; > + } > > aca->aca_next = idev->ac_list; > idev->ac_list = aca;
you misunderstood my comment. aca_put is instead of a double call to fib6_info_release(f6i). You still need one call to fib6_info_release(f6i) for the addrconf_f6i_alloc.