From: Alexander Bluhm Subject: unlock socket splice idle timeout To: tech@openbsd.org Date: Thu, 1 Aug 2024 14:26:02 +0200 Hi, The socket splice idle timeout does not need kernel lock. ok? bluhm Index: kern/uipc_socket.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_socket.c,v diff -u -p -r1.340 uipc_socket.c --- kern/uipc_socket.c 29 Jul 2024 10:35:22 -0000 1.340 +++ kern/uipc_socket.c 31 Jul 2024 17:36:32 -0000 @@ -361,7 +361,8 @@ sofree(struct socket *so, int keep_lock) #ifdef SOCKET_SPLICE if (so->so_sp) { /* Reuse splice idle, sounsplice() has been called before. */ - timeout_set_proc(&so->so_sp->ssp_idleto, soreaper, so); + timeout_set_flags(&so->so_sp->ssp_idleto, soreaper, so, + KCLOCK_NONE, TIMEOUT_PROC | TIMEOUT_MPSAFE); timeout_add(&so->so_sp->ssp_idleto, 0); } else #endif /* SOCKET_SPLICE */ @@ -1487,7 +1488,8 @@ sosplice(struct socket *so, int fd, off_ so->so_idletv = *tv; else timerclear(&so->so_idletv); - timeout_set_proc(&so->so_idleto, soidle, so); + timeout_set_flags(&so->so_idleto, soidle, so, + KCLOCK_NONE, TIMEOUT_PROC | TIMEOUT_MPSAFE); task_set(&so->so_splicetask, sotask, so); /*