kernel: fix pexit() Waitmsg memory leak.
when a process got forked with RFNOWAIT, its p->parent will still point to the parent process, but its p->parentpid == 0. this causes the "parent still alive" check in pexit to get confused as it only checked p->pid == up->parentpid. this condition is *TRUE* in the case of RFNOWAIT when the parent process is actually dead (p->pid == 0) so we attached the wait structure to the dead parent leaking the memory.
This commit is contained in:
parent
e2da074d28
commit
4fd55abb8e
1 changed files with 1 additions and 1 deletions
|
@ -1135,7 +1135,7 @@ pexit(char *exitstr, int freemem)
|
|||
/*
|
||||
* Check that parent is still alive.
|
||||
*/
|
||||
if(p->pid == up->parentpid && p->state != Broken) {
|
||||
if(p->pid != 0 && p->pid == up->parentpid && p->state != Broken) {
|
||||
p->nchild--;
|
||||
p->time[TCUser] += utime;
|
||||
p->time[TCSys] += stime;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue