diff options
author | jhb <jhb@FreeBSD.org> | 2007-01-05 19:59:46 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2007-01-05 19:59:46 +0000 |
commit | 256d3cdbaf7ae58daa236a7354b03d5b94182a94 (patch) | |
tree | e46a50c7a9eee093c285b17e8f575f16faf97862 /sys/dev | |
parent | db17c1d99766e8e363022d2083401fc77d932e08 (diff) | |
download | FreeBSD-src-256d3cdbaf7ae58daa236a7354b03d5b94182a94.zip FreeBSD-src-256d3cdbaf7ae58daa236a7354b03d5b94182a94.tar.gz |
- Close a race between enumerating UNIX domain socket pcb structures via
sysctl and socket teardown by adding a reference count to the UNIX domain
pcb object and fixing the sysctl that enumerates unpcbs to grab a
reference on each unpcb while it builds the list to copy out to userland.
- Close a race between UNIX domain pcb garbage collection (unp_gc()) and
file descriptor teardown (fdrop()) by adding a new garbage collection
flag FWAIT. unp_gc() sets FWAIT while it walks the message buffers
in a UNIX domain socket looking for nested file descriptor references
and clears the flag when it is finished. fdrop() checks to see if the
flag is set on a file descriptor whose refcount just dropped to 0 and
waits for unp_gc() to clear the flag before completely destroying the
file descriptor.
MFC after: 1 week
Reviewed by: rwatson
Submitted by: ups
Hopefully makes the panics go away: mx1
Diffstat (limited to 'sys/dev')
0 files changed, 0 insertions, 0 deletions