diff options
author | rsc <rsc> | 2006-09-07 01:56:22 +0000 |
---|---|---|
committer | rsc <rsc> | 2006-09-07 01:56:22 +0000 |
commit | 1133b215d8ce5f72d2252cf19b81fc29289d0b38 (patch) | |
tree | 25a7bd8253ad894dae8e7c3547a10eb6e8fba41f /proc.c | |
parent | f70172129c94e4d53b56fc10a7d859679b581bd2 (diff) | |
download | xv6-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.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; } |