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