From ced43cb5e7d590052db072cdd9bebbaf40619298 Mon Sep 17 00:00:00 2001 From: cognet Date: Fri, 9 Jan 2004 23:42:36 +0000 Subject: Prevent a race condition between fork1() and whatever changes the pgrp by setting the new process' p_pgrp again before inserting it in the p_pglist. Without it we can get the new process to be inserted in a different p_pglist than the one p2->p_pgrp points to, and this is not something we want to happen. This is not a fix, merely a bandaid, but it will work until someone finds a better way to do it. Discussed with: jhb (a long time ago) --- sys/kern/kern_fork.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index ed1b4c6..ced9b28 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -591,6 +591,7 @@ again: if (flags & RFPPWAIT) p2->p_flag |= P_PPWAIT; + p2->p_pgrp = p1->p_pgrp; LIST_INSERT_AFTER(p1, p2, p_pglist); PGRP_UNLOCK(p1->p_pgrp); LIST_INIT(&p2->p_children); -- cgit v1.1