soaccept() is always called at IPL_SOFTNET, so assert it instead of
raising the SPL level recursively.  This is not a problem currently
but will be one as soon as we use a non-recursive rwlock.

ok?

Index: kern/uipc_socket.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.157
diff -u -p -r1.157 uipc_socket.c
--- kern/uipc_socket.c  3 Sep 2016 14:09:58 -0000       1.157
+++ kern/uipc_socket.c  12 Sep 2016 09:13:29 -0000
@@ -300,9 +300,10 @@ soabort(struct socket *so)
 int
 soaccept(struct socket *so, struct mbuf *nam)
 {
-       int s = splsoftnet();
        int error = 0;
 
+       splsoftassert(IPL_SOFTNET);
+
        if ((so->so_state & SS_NOFDREF) == 0)
                panic("soaccept !NOFDREF: so %p, so_type %d", so, so->so_type);
        so->so_state &= ~SS_NOFDREF;
@@ -312,7 +313,6 @@ soaccept(struct socket *so, struct mbuf 
                    nam, NULL, curproc);
        else
                error = ECONNABORTED;
-       splx(s);
        return (error);
 }
 

Reply via email to