From: Vitaliy Makkoveev Subject: Re: unlock socket splice idle timeout To: Alexander Bluhm Cc: tech@openbsd.org Date: Thu, 1 Aug 2024 15:39:45 +0300 On Thu, Aug 01, 2024 at 02:26:02PM +0200, Alexander Bluhm wrote: > Hi, > > The socket splice idle timeout does not need kernel lock. > > ok? > ok mvs > 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); > > /* >