Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-5-1] src/sys



Module Name:    src
Committed By:   riz
Date:           Mon Aug  8 19:47:02 UTC 2011

Modified Files:
        src/sys/kern [netbsd-5-1]: init_main.c uipc_socket.c
        src/sys/sys [netbsd-5-1]: socketvar.h

Log Message:
Pull up following revision(s) (requested by bouyer in ticket #1644):
        sys/sys/socketvar.h: revision 1.126
        sys/kern/init_main.c: revision 1.433
        sys/kern/uipc_socket.c: revision 1.205
Fix kern/45093 as discussed on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2011/06/17/msg010734.html
The cause of the problem is that the so_pendfree is processed with
the softnet_lock held at one point, and processing the list
calls sodoloanfree() which may kpause(). As the thread sleeps with
softnet_lock held, it ultimately cause a deadlock (see the PR or tech-kern
thread for details).
Although it should be possible to call sodopendfree() after releasing
the socket lock, it's not so easy to know where he socket lock is held and
where it's not, so we may hit the issue again later.
Add a kernel thread to handle the so_pendfree list, and wake up this
thread when adding mbufs to this list. Get rid of the various sodopendfree()
calls, hopefully fixing definitively the problem.


To generate a diff of this commit:
cvs rdiff -u -r1.371.2.4 -r1.371.2.4.2.1 src/sys/kern/init_main.c
cvs rdiff -u -r1.177.4.3 -r1.177.4.3.2.1 src/sys/kern/uipc_socket.c
cvs rdiff -u -r1.116.4.2 -r1.116.4.2.6.1 src/sys/sys/socketvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Home | Main Index | Thread Index | Old Index