|
@@ -1948,6 +1948,7 @@ errdad:
|
|
spin_unlock_bh(&ifp->lock);
|
|
spin_unlock_bh(&ifp->lock);
|
|
|
|
|
|
addrconf_mod_dad_work(ifp, 0);
|
|
addrconf_mod_dad_work(ifp, 0);
|
|
|
|
+ in6_ifa_put(ifp);
|
|
}
|
|
}
|
|
|
|
|
|
/* Join to solicited addr multicast group.
|
|
/* Join to solicited addr multicast group.
|
|
@@ -3857,6 +3858,7 @@ static void addrconf_dad_work(struct work_struct *w)
|
|
addrconf_dad_begin(ifp);
|
|
addrconf_dad_begin(ifp);
|
|
goto out;
|
|
goto out;
|
|
} else if (action == DAD_ABORT) {
|
|
} else if (action == DAD_ABORT) {
|
|
|
|
+ in6_ifa_hold(ifp);
|
|
addrconf_dad_stop(ifp, 1);
|
|
addrconf_dad_stop(ifp, 1);
|
|
if (disable_ipv6)
|
|
if (disable_ipv6)
|
|
addrconf_ifdown(idev->dev, 0);
|
|
addrconf_ifdown(idev->dev, 0);
|