Hi, As NET_LOCK() is a read/write lock, it can sleep in sotask(). So the TASKQ_CANTSLEEP flag is no longer valid for the splicing thread.
ok? bluhm Index: kern/uipc_socket.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_socket.c,v retrieving revision 1.170 diff -u -p -r1.170 uipc_socket.c --- kern/uipc_socket.c 20 Dec 2016 21:15:36 -0000 1.170 +++ kern/uipc_socket.c 20 Dec 2016 23:29:00 -0000 @@ -1070,8 +1070,7 @@ sosplice(struct socket *so, int fd, off_ int s, error = 0; if (sosplice_taskq == NULL) - sosplice_taskq = taskq_create("sosplice", 1, IPL_SOFTNET, - TASKQ_CANTSLEEP); + sosplice_taskq = taskq_create("sosplice", 1, IPL_SOFTNET, 0); if (sosplice_taskq == NULL) return (ENOMEM);