On Fri, Jan 24, 2025 at 02:19:07AM -0700, Vitaliy Makkoveev wrote: > CVSROOT: /cvs > Module name: src > Changes by: m...@cvs.openbsd.org 2025/01/24 02:19:07 > > Modified files: > sys/net : if.c if_var.h > > Log message: > Move interface groups copyout(9)s out of netlock within ifioctl_get(). > > The interface groups use complicated linking scheme with special data > structures allowing to link multiple interfaces with multiple groups. > We can't use iterators here, because some path are netlock covered and > we can't sleep in refcnt_finalize(9). We also can't use double locking > to protect this linking data because this new lock will cover very wide > area in kernel. > > Link desired interface groups or interfaces from group into temporary > lists, protected by new dedicated `if_tmplist_lock' rwlock(9). Bump the > reference counter to make concurrent destruction thread wait until > temporary linked data became unused. > > Delivered data are immutable, so netlock required only while filling > temporary lists. > > ok bluhm
My amd64 regress machine locks up while running regress/usr.sbin/snmpd, cannot spawn new processes nor enter ddb. Bisected to this commit introducing the regression.