Up to [cvs.NetBSD.org] / src / sys / kern
Request diff between arbitrary revisions
Default branch: MAIN
Current tag: jmcneill-usbmp
Revision 22.214.171.124 / (download) - annotate - [select for diffs], Thu Apr 5 21:33:40 2012 UTC (2 years ago) by mrg
Changes since 126.96.36.199: +3 -3 lines
Diff to previous 188.8.131.52 (colored) to branchpoint 1.205 (colored) next main 1.206 (colored)
sync to latest -current.
Revision 184.108.40.206 / (download) - annotate - [select for diffs], Sat Feb 18 07:35:34 2012 UTC (2 years, 2 months ago) by mrg
Changes since 1.205: +15 -27 lines
Diff to previous 1.205 (colored)
merge to -current.
Revision 1.205 / (download) - annotate - [select for diffs], Sat Jul 2 17:53:50 2011 UTC (2 years, 9 months ago) by bouyer
CVS Tags: yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base, jmcneill-audiomp3-base, jmcneill-audiomp3
Branch point for: yamt-pagecache, jmcneill-usbmp
Changes since 1.204: +46 -66 lines
Diff to previous 1.204 (colored)
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.