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);
 

Reply via email to