[Bug 238789] panic: mutex so_rcv not owned at /usr/src/sys/kern/uipc_socket.c:2359

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Jun 24 12:41:43 UTC 2019


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238789

            Bug ID: 238789
           Summary: panic: mutex so_rcv not owned at
                    /usr/src/sys/kern/uipc_socket.c:2359
           Product: Base System
           Version: 12.0-STABLE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs at FreeBSD.org
          Reporter: greg at codeconcepts.com

If the call to sblock() in soreceive_stream() returns non-zero we 'goto out',
but since we have not yet acquired the sockbuf lock we trip the
SOCKBUF_LOCK_ASSERT() at the "out" label.

The following patch seems to work for me, but neglects to make the checks that
are done under the sockbuf lock after the "out" label.

$ svnlite diff sys/kern/uipc_socket.c
Index: sys/kern/uipc_socket.c
===================================================================
--- sys/kern/uipc_socket.c      (revision 349288)
+++ sys/kern/uipc_socket.c      (working copy)
@@ -2196,7 +2196,7 @@
        /* Prevent other readers from entering the socket. */
        error = sblock(sb, SBLOCKWAIT(flags));
        if (error)
-               goto out;
+               return error;
        SOCKBUF_LOCK(sb);

        /* Easy one, no space to copyout anything. */


 svnlite info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/stable/12
Relative URL: ^/stable/12
Repository Root: https://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 349288
Node Kind: directory
Schedule: normal
Last Changed Author: gjb
Last Changed Rev: 349232
Last Changed Date: 2019-06-20 09:34:45 -0500 (Thu, 20 Jun 2019)

[greg at sm1 src]
$ svnlite status
?       sys/amd64/conf/SM1
M       sys/kern/uipc_socket.c

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list