Since the rev1.267 of kern/uipc_socket solock() is used as klist lock for sockets to make socket event filters MP-safe. This means KNOTE(9) within doaccept() doesn't require kernel lock to be held and the accept(2) and accept4(2) syscalls could be unlocked. This makes sense because all our sockets use rwlock(9)s for protection. This also makes sense for the next step of unix(4) sockets unlocking.
The sys_accept() and sys_accept4() are just wrappers around doaccept() which does all the work and there is no differences within so they could be unlocked together. I also tested this diff with all incarnation of "Rework UNIX sockets locking to be fine grained" diff [1]. ok? 1.https://marc.info/?l=openbsd-tech&m=163758154427455&w=2 Index: sys/kern/syscalls.master =================================================================== RCS file: /cvs/src/sys/kern/syscalls.master,v retrieving revision 1.219 diff -u -p -r1.219 syscalls.master --- sys/kern/syscalls.master 27 Oct 2021 03:24:44 -0000 1.219 +++ sys/kern/syscalls.master 22 Nov 2021 11:51:33 -0000 @@ -95,7 +95,7 @@ 29 STD NOLOCK { ssize_t sys_recvfrom(int s, void *buf, size_t len, \ int flags, struct sockaddr *from, \ socklen_t *fromlenaddr); } -30 STD { int sys_accept(int s, struct sockaddr *name, \ +30 STD NOLOCK { int sys_accept(int s, struct sockaddr *name, \ socklen_t *anamelen); } 31 STD { int sys_getpeername(int fdes, struct sockaddr *asa, \ socklen_t *alen); } @@ -204,7 +204,7 @@ 91 STD NOLOCK { int sys_nanosleep(const struct timespec *rqtp, \ struct timespec *rmtp); } 92 STD NOLOCK { int sys_fcntl(int fd, int cmd, ... void *arg); } -93 STD { int sys_accept4(int s, struct sockaddr *name, \ +93 STD NOLOCK { int sys_accept4(int s, struct sockaddr *name, \ socklen_t *anamelen, int flags); } 94 STD NOLOCK { int sys___thrsleep(const volatile void *ident, \ clockid_t clock_id, const struct timespec *tp, \