On Wed, Jun 07, 2023 at 01:15:46PM +0300, Vitaliy Makkoveev wrote: > In this point, the interface is disconnected from everywhere. No need to > hold netlock for dummy 'nd_ifinfo' release. Netlock is also not needed > for TAILQ_EMPTY(&ifp->if_*hooks) assertions.
OK bluhm@ > Index: sys/net/if.c > =================================================================== > RCS file: /cvs/src/sys/net/if.c,v > retrieving revision 1.699 > diff -u -p -r1.699 if.c > --- sys/net/if.c 5 Jun 2023 11:35:46 -0000 1.699 > +++ sys/net/if.c 7 Jun 2023 10:15:12 -0000 > @@ -1170,6 +1170,8 @@ if_detach(struct ifnet *ifp) > ifafree(ifa); > } > } > + splx(s); > + NET_UNLOCK(); > > KASSERT(TAILQ_EMPTY(&ifp->if_addrhooks)); > KASSERT(TAILQ_EMPTY(&ifp->if_linkstatehooks)); > @@ -1178,8 +1180,6 @@ if_detach(struct ifnet *ifp) > #ifdef INET6 > nd6_ifdetach(ifp); > #endif > - splx(s); > - NET_UNLOCK(); > > /* Announce that the interface is gone. */ > rtm_ifannounce(ifp, IFAN_DEPARTURE);