summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorrsc <rsc>2006-09-07 01:56:22 +0000
committerrsc <rsc>2006-09-07 01:56:22 +0000
commit1133b215d8ce5f72d2252cf19b81fc29289d0b38 (patch)
tree25a7bd8253ad894dae8e7c3547a10eb6e8fba41f /proc.c
parentf70172129c94e4d53b56fc10a7d859679b581bd2 (diff)
downloadxv6-labs-1133b215d8ce5f72d2252cf19b81fc29289d0b38.tar.gz
xv6-labs-1133b215d8ce5f72d2252cf19b81fc29289d0b38.tar.bz2
xv6-labs-1133b215d8ce5f72d2252cf19b81fc29289d0b38.zip
more defensive programming
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/proc.c b/proc.c
index 8aa1ff1..06ee2fd 100644
--- a/proc.c
+++ b/proc.c
@@ -371,7 +371,9 @@ proc_wait(void)
havekids = 0;
for(i = 0; i < NPROC; i++){
p = &proc[i];
- if(p->state != UNUSED && p->ppid == cp->pid){
+ if(p->state == UNUSED)
+ continue;
+ if(p->ppid == cp->pid){
if(p->state == ZOMBIE){
// Found one.
kfree(p->mem, p->sz);
@@ -379,6 +381,7 @@ proc_wait(void)
pid = p->pid;
p->state = UNUSED;
p->pid = 0;
+ p->ppid = 0;
release(&proc_table_lock);
return pid;
}