diff options
author | Thomas Bushnell <thomas@gnu.org> | 1999-03-07 23:21:44 +0000 |
---|---|---|
committer | Thomas Bushnell <thomas@gnu.org> | 1999-03-07 23:21:44 +0000 |
commit | e75fa13f1038436d0ebd4cabd637c4c477c125de (patch) | |
tree | 3b0cfb11f77f336c744ab80597f38f7cb2af2dd2 /proc/mgt.c | |
parent | 08f448eb701384824f0b5af0e9606c23a5587e8b (diff) |
Sun Mar 7 18:19:07 1999 Thomas Bushnell, BSG <tb@mit.edu>
* mgt.c (process_has_exited): Use mach_port_destroy instead of
mach_port_deallocate to release P->p_msgport.
(complete_exit): Likewise for P->p_task.
These changes eliminate a race; we are destroying the receiver of
the dead-name notifications on these ports, but if that means we
lose a notification, then the ref-count on the name will get
incremented and we can't re-decrement it since we never hear the
notification.
Diffstat (limited to 'proc/mgt.c')
-rw-r--r-- | proc/mgt.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1,5 +1,5 @@ /* Process management - Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1999 Free Software Foundation, Inc. This file is part of the GNU Hurd. @@ -652,7 +652,7 @@ process_has_exited (struct proc *p) alert_parent (p); if (p->p_msgport) - mach_port_deallocate (mach_task_self (), p->p_msgport); + mach_port_destroy (mach_task_self (), p->p_msgport); p->p_msgport = MACH_PORT_NULL; prociterate ((void (*) (struct proc *, void *))check_message_dying, p); @@ -717,7 +717,7 @@ complete_exit (struct proc *p) remove_proc_from_hash (p); if (p->p_task != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), p->p_task); + mach_port_destroy (mach_task_self (), p->p_task); /* Remove us from our parent's list of children. */ if (p->p_sib) |