freebsd-skq/sys
Konstantin Belousov 741b6cf8a5 Another problem caused by the knlist_cleardel() potentially dropping
PIPE_MTX().

Since the pipe_present is cleared before (potentially) sleeping, the
second thread may enter the pipeclose() for the reciprocal pipe end.
The test at the end of the pipeclose() for the pipe_present == 0 would
succeed, allowing the second thread to free the pipe memory. First
threads then accesses the freed memory after being woken up.

Properly track the closing state of the pipe in the pipe_present.
Introduce the intermediate state that marks the pipe as mostly
dismantled but might be sleeping waiting for the knote list to be
cleared. Free the pipe pair memory only when both ends pass that point.

Debugging help and tested by:	pho
Discussed with:	jmg
MFC after:	2 weeks
2008-05-23 11:14:03 +00:00
..
amd64 The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
arm The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
boot Add an entry for the age(4) module. 2008-05-19 02:13:50 +00:00
bsm Merge OpenBSM 1.0 changes to src/sys/bsm: 2007-10-29 18:47:25 +00:00
cam Locking in the ses_ioctl handler doesn't have to be so strict because 2008-03-17 17:18:16 +00:00
cddl Custom DTrace kernel module files plus FreeBSD-specific DTrace providers. 2008-05-23 05:59:42 +00:00
compat Fix a panic when it occurred during initializing the ndis driver because 2008-05-15 04:29:28 +00:00
conf Add support for generating CTF data for the kernel. 2008-05-23 03:53:49 +00:00
contrib Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
crypto Make test00 compilable again. 2008-01-15 18:34:47 +00:00
ddb Rename debug.ddb.capture.bytes sysctl to debug.ddb.capture.bufoff in 2008-04-25 13:23:36 +00:00
dev Add codec id for Sigmatel STAC9872AK 2008-05-22 09:14:12 +00:00
fs Implement the per-open file data for the cdev. 2008-05-21 09:31:44 +00:00
gdb Commit SYSINIT() ;-adding patch missed in previous pass. 2008-03-16 13:02:04 +00:00
geom - Recognize the 'volume' parameter when creating a plex. 2008-05-22 10:27:03 +00:00
gnu Move the head of byte-level advisory lock list from the 2008-04-16 11:33:32 +00:00
i4b Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
i386 The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
ia64 The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
isa atrtc.c is a repocopy of the RTC device driver from i386/isa/clock.c 2008-04-14 07:57:15 +00:00
kern Another problem caused by the knlist_cleardel() potentially dropping 2008-05-23 11:14:03 +00:00
libkern Add prototype for __cmpd2(). 2008-02-23 22:40:05 +00:00
mips Retire pmap_addr_hint(). It is no longer used. 2008-05-18 04:16:57 +00:00
modules clear out crud 2008-05-22 21:53:15 +00:00
net The if_check() function performed three actions: 2008-05-17 03:38:13 +00:00
net80211 special-case broadcast probe request in ieee80211_find_rxnode; we need 2008-05-22 22:22:10 +00:00
netatalk Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
netatm Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
netgraph Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
netinet Consistently check IPFW and DUMMYNET privileges in the configuration 2008-05-22 08:10:31 +00:00
netinet6 - Adds support for the multi-asconf (From Kozuka-san) 2008-05-20 13:47:46 +00:00
netipsec Remove last bits of OS adaptation code from the IPSec code. 2008-05-17 04:00:11 +00:00
netipx Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
netnatm
netncp lockmgrs need to be released before to be destroyed and draining doesn't 2008-03-30 18:16:33 +00:00
netsmb Really, smb_iod_main() is not totally MPSAFE, so just acquire and drop 2008-03-27 01:23:59 +00:00
nfs Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
nfs4client Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
nfsclient Allow the block size used when booting over NFS to be overridden. It defaults 2008-05-16 06:27:03 +00:00
nfsserver Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
nlm Tighten up the error-handling in nlm_get_rpc. While I'm here, fix a 2008-04-16 09:09:50 +00:00
opencrypto Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
pc98 Resort the if_ti driver to match the PCI Network cards instead of placing 2008-05-17 23:50:00 +00:00
pccard
pci - Set sc->dev to the new-bus device_t so all the device_printf()s work. 2008-05-12 21:34:52 +00:00
powerpc The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
rpc Fix some issues that showed up during Kris' testing. 2008-04-11 10:34:59 +00:00
security Don't use LK_DRAIN before calling VOP_FSYNC() in the two further 2008-05-21 13:59:05 +00:00
sparc64 The VM system no longer uses setPQL2(). Remove it and its helpers. 2008-05-23 04:03:54 +00:00
sun4v Use the "options " spelling (vs. "options<TAB>") so that commented lines 2008-05-21 03:36:53 +00:00
sys Another problem caused by the knlist_cleardel() potentially dropping 2008-05-23 11:14:03 +00:00
tools Introduce a standalone shell script for embedding MFS image. 2008-02-05 10:46:30 +00:00
ufs Allow VM object creation in ufs_lookup. (If vfs.vmiodirenable is set) 2008-05-20 19:05:43 +00:00
vm Allow VM object creation in ufs_lookup. (If vfs.vmiodirenable is set) 2008-05-20 19:05:43 +00:00
xdr Add the new kernel-mode NFS Lock Manager. To use it instead of the 2008-03-26 15:23:12 +00:00
Makefile + Use the default cscope names. 2008-05-21 07:56:10 +00:00