]> git.lizzy.rs Git - plan9front.git/commitdiff
fix spurious kproc ppid
authorcinap_lenrek <cinap_lenrek@gmx.de>
Wed, 7 Nov 2012 19:46:30 +0000 (20:46 +0100)
committercinap_lenrek <cinap_lenrek@gmx.de>
Wed, 7 Nov 2012 19:46:30 +0000 (20:46 +0100)
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.

sys/src/9/port/proc.c
sys/src/9/port/sysproc.c

index 3abc16080804b26c794ab272a4ef22e7f567875e..06bdf474ebc14b40580fe4fc28b6804d913ebadc 100644 (file)
@@ -644,6 +644,7 @@ newproc(void)
        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);
index c4075fa1ef346332e971fa1ccac7cf46725c6088..177c4a7988d7ae57fc4dd7dd3dc6d838da1818d3 100644 (file)
@@ -169,10 +169,8 @@ sysrfork(ulong *arg)
        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);