Date: Sun, 29 Oct 2000 13:52:55 -0800 (PST) From: Matt Dillon <dillon@earth.backplane.com> To: Jordan Hubbard <jkh@winston.osd.bsdi.com>, Alexander Viro <viro@math.psu.edu> Cc: freebsd-stable@freebsd.org Subject: Proposed patch related to August discussion on file descriptor races and kern/11629 Message-ID: <200010292152.e9TLqt371320@earth.backplane.com>
next in thread | raw e-mail | index | archive | help
I've finally had time to really go through the file descriptor
handling code for FreeBSD and work up a more complete patch to
solve races intrdocued by the shared descriptor table feature
(used by RFMEM forks, aka threads).
Alexander Viro emailed me in August giving me a heads up on the
issue and described what they did to fix Linux. I also found a PR
on pieces of the same issue, kern/11629. Note that there are exploits
available that can crash an unfixed machine.
The fix is, as most of us would expect, to hold an additional reference
on the struct file pointer during an operation. The reference held by
the file descriptor array is no longer sufficient since the file
descriptor array may be shared between processes.
This involves some straightforward but significant work, which I now have
a patch for. The work is not entirely trivial so I have some qualms
about putting it in 4.2, but I believe the issue is important enough that
we *should* put this in 4.2.
I would appreciate a review for correctness. Unfortunately I have only
one test box at the moment, and very little time available so this patch
is directly for 4.2, not -current.
http://apollo.backplane.com/FreeBSD4/
Jordan, due to the circumstances of this patch and its complexity, I
believe I need you to sign-off on it for the release (or decide otherwise
if you do not think we can test it sufficiently before the role). I am
doing final testing of the patch now (making sure I didn't cause any
file table leaks).
-Matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010292152.e9TLqt371320>
