We need to relesae ifp->lock before we call addrconf_dad_stop(),
which will hold ifp->lock.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
                return;
        }
 
-       if (idev->if_flags & IF_READY)
+       if (idev->if_flags & IF_READY) {
                addrconf_dad_kick(ifp);
-       else {
+               spin_unlock_bh(&ifp->lock);
+       } else {
+               spin_unlock_bh(&ifp->lock);
                /*
                 * If the defice is not ready:
                 * - keep it tentative if it is a permanent address.
                in6_ifa_hold(ifp);
                addrconf_dad_stop(ifp);
        }
-
-       spin_unlock_bh(&ifp->lock);
 out:
        read_unlock_bh(&idev->lock);
 }