git: kernel - Fix exit races which can lead to a corrupt p_children list
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Aug 15 18:16:04 PDT 2012
commit 0730ed66e3324415127af9bc0fe9dafa399f4e91
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Aug 15 18:11:11 2012 -0700
kernel - Fix exit races which can lead to a corrupt p_children list
* There are a few races when getting multiple tokens where a threaded
process is wait*()ing for exiting children from multiple threads
at once.
Fix the problem by serializing the operation on a per-child basis,
and by using PHOLD/PRELE prior to acquiring the child's p_token.
Then re-check the conditions before accepting the child.
* There is a small chance this will also reduce or fix VM on-exit races
in i386, as this bug could result in an already-destroyed process
being pulled off by the racing wait*(). Maybe 25% chance.
Summary of changes:
sys/kern/kern_exit.c | 69 ++++++++++++++++++++++++++++++++++++--
sys/kern/kern_proc.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++---
sys/sys/proc.h | 4 ++
3 files changed, 156 insertions(+), 9 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0730ed66e3324415127af9bc0fe9dafa399f4e91
--
DragonFly BSD source repository
More information about the Commits
mailing list