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.