Unlock getsockopt(2) and setsockopt(2). Unlock them both because at
authormvs <mvs@openbsd.org>
Wed, 30 Nov 2022 10:20:37 +0000 (10:20 +0000)
committermvs <mvs@openbsd.org>
Wed, 30 Nov 2022 10:20:37 +0000 (10:20 +0000)
protocol layer they follow the same (*pr_ctloutput)() handlers.

At sockets layer we touch only per-socket data, which is solock()
protected.

At protocol layer, udp(4), unix(4) and key management sockets have no
(*pr_ctloutput)() handlers. route_ctloutput() touches only per socket
data, which is solock() protected. inet{,6} globals are protected by
netlock, which is solock() backend for corresponding sockets.

ok bluhm@

sys/kern/syscalls.master

index 56baf29..99554db 100644 (file)
@@ -1,4 +1,4 @@
-;      $OpenBSD: syscalls.master,v 1.236 2022/11/09 10:26:28 mpi Exp $
+;      $OpenBSD: syscalls.master,v 1.237 2022/11/30 10:20:37 mvs Exp $
 ;      $NetBSD: syscalls.master,v 1.32 1996/04/23 10:24:21 mycroft Exp $
 
 ;      @(#)syscalls.master     8.2 (Berkeley) 1/13/94
 103    STD             { int sys_sigreturn(struct sigcontext *sigcntxp); }
 104    STD             { int sys_bind(int s, const struct sockaddr *name, \
                            socklen_t namelen); }
-105    STD             { int sys_setsockopt(int s, int level, int name, \
+105    STD NOLOCK      { int sys_setsockopt(int s, int level, int name, \
                            const void *val, socklen_t valsize); }
 106    STD             { int sys_listen(int s, int backlog); }
 107    STD             { int sys_chflagsat(int fd, const char *path, \
                            struct timespec *timeout); }
 117    STD NOLOCK      { int sys_sendmmsg(int s,  struct mmsghdr *mmsg,\
                            unsigned int vlen, int flags); }
-118    STD             { int sys_getsockopt(int s, int level, int name, \
+118    STD NOLOCK      { int sys_getsockopt(int s, int level, int name, \
                            void *val, socklen_t *avalsize); }
 119    STD             { int sys_thrkill(pid_t tid, int signum, void *tcb); }
 120    STD NOLOCK      { ssize_t sys_readv(int fd, \