git: 9front

Download patch

ref: eaf0c40836472a1085905ba27b0ce842cef6d8ae
parent: dc5e2749b2a80e395d47e03ada03d1d66a978032
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed Nov 7 15:46:30 EST 2012

fix spurious kproc ppid

newproc() didnt zero parentpid and kproc() didnt set it, so
kprocs ended up with random parent pid. this is harmless as
kprocs have no up->parent but it gives confusing results in
pstree(1).

now we zero parentpid in newproc(), and set it in sysrfork()
unless RFNOWAIT has been set.

--- a/sys/src/9/port/proc.c
+++ b/sys/src/9/port/proc.c
@@ -644,6 +644,7 @@
 	p->nargs = 0;
 	p->setargs = 0;
 	memset(p->seg, 0, sizeof p->seg);
+	p->parentpid = 0;
 	p->noteid = pidalloc(p);
 	if(p->kstack == 0)
 		p->kstack = smalloc(KSTACK);
--- a/sys/src/9/port/sysproc.c
+++ b/sys/src/9/port/sysproc.c
@@ -169,10 +169,8 @@
 	forkchild(p, up->dbgreg);
 
 	p->parent = up;
-	p->parentpid = up->pid;
-	if(flag&RFNOWAIT)
-		p->parentpid = 0;
-	else {
+	if((flag&RFNOWAIT) == 0){
+		p->parentpid = up->pid;
 		lock(&up->exl);
 		up->nchild++;
 		unlock(&up->exl);
--