Index: nd6_nbr.c =================================================================== RCS file: /cvsroot/src/sys/netinet6/nd6_nbr.c,v retrieving revision 1.128 diff -u -r1.128 nd6_nbr.c --- nd6_nbr.c 18 Oct 2016 07:30:31 -0000 1.128 +++ nd6_nbr.c 6 Nov 2016 09:16:10 -0000 @@ -1228,6 +1228,7 @@ { struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa; struct dadq *dp; + int duplicate = 0; #ifndef NET_MPSAFE mutex_enter(softnet_lock); @@ -1285,10 +1286,6 @@ * We have transmitted sufficient number of DAD packets. * See what we've got. */ - int duplicate; - - duplicate = 0; - if (dp->dad_na_icount) { /* * the check is in nd6_dad_na_input(), @@ -1305,7 +1302,6 @@ if (duplicate) { /* (*dp) will be freed in nd6_dad_duplicated() */ dp = NULL; - nd6_dad_duplicated(ifa); } else { /* * We are done with DAD. No NA came, no NS came. @@ -1328,6 +1324,10 @@ done: mutex_exit(&nd6_dad_lock); + + if (duplicate) + nd6_dad_duplicated(ifa); + #ifndef NET_MPSAFE KERNEL_UNLOCK_ONE(NULL); mutex_exit(softnet_lock);