aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2008-05-23 11:14:03 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2008-05-23 11:14:03 +0000
commit741b6cf8a565f75b3868bea8a0c4c0e247e23d24 (patch)
tree2f7631d2ccb9ea2c943c0229771b4aeb0408a3bc /usr.sbin
parente2e1693f15b3e143d2d00f2ba40fb0015b02789c (diff)
downloadsrc-741b6cf8a565f75b3868bea8a0c4c0e247e23d24.tar.gz
src-741b6cf8a565f75b3868bea8a0c4c0e247e23d24.zip
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
Notes
Notes: svn path=/head/; revision=179243
Diffstat (limited to 'usr.sbin')
0 files changed, 0 insertions, 0 deletions