diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 4163bea0eb9b..213fc4f9b265 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1686,6 +1686,7 @@ void addrconf_dad_failure(struct inet6_ifaddr *ifp) spin_unlock_bh(&ifp->state_lock); addrconf_mod_dad_work(ifp, 0); + in6_ifa_put(ifp); } /* Join to solicited addr multicast group. @@ -3262,6 +3263,7 @@ static void addrconf_dad_work(struct work_struct *w) addrconf_dad_begin(ifp); goto out; } else if (action == DAD_ABORT) { + in6_ifa_hold(ifp); addrconf_dad_stop(ifp, 1); goto out; }