From 06ad0da69e71fa76f856fc9e5497c4163b0e99f2 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Thu, 18 Jul 1996 22:39:37 +0000 Subject: *** empty log message *** --- proc/ChangeLog | 8 +++++++- proc/mgt.c | 6 +++++- proc/msg.c | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'proc') diff --git a/proc/ChangeLog b/proc/ChangeLog index 4e2613fd..a0285944 100644 --- a/proc/ChangeLog +++ b/proc/ChangeLog @@ -1,7 +1,13 @@ Thu Jul 18 13:23:51 1996 Michael I. Bushnell, p/BSG - * mgt.c (S_proc_handle_exceptions): Release newly created referenc + * msg.c (S_proc_setmsgport): Use MOVE_SEND, not COPY_SEND, to + return the old message port to the caller. + + * mgt.c (S_proc_handle_exceptions): Release newly created reference on E when we are done with it. + (S_proc_child): Deallocate our ref on childt once we know we will + return success. + (S_proc_reassign): Likewise for NEWT. * main.c (main): Don't wire proc anymore. It's not necessary or useful. diff --git a/proc/mgt.c b/proc/mgt.c index 4b942597..e8af38d4 100644 --- a/proc/mgt.c +++ b/proc/mgt.c @@ -146,6 +146,8 @@ S_proc_child (struct proc *parentp, if (childp->p_parentset) return EBUSY; + mach_port_deallocate (mach_task_self (), childt); + /* Process identification. Leave p_task and p_pid alone; all the rest comes from the new parent. */ @@ -212,11 +214,13 @@ S_proc_reassign (struct proc *p, if (stubp == p) return EINVAL; + mach_port_deallocate (mach_task_self (), newt); + remove_proc_from_hash (p); task_terminate (p->p_task); mach_port_deallocate (mach_task_self (), p->p_task); - p->p_task = newt; + p->p_task = stubp->p_task; /* For security, we need use the request port from STUBP */ ports_transfer_right (p, stubp); diff --git a/proc/msg.c b/proc/msg.c index f7ba1b5e..701fa149 100644 --- a/proc/msg.c +++ b/proc/msg.c @@ -54,7 +54,7 @@ S_proc_setmsgport (struct proc *p, return EOPNOTSUPP; *oldmsgport = p->p_msgport; - *oldmsgport_type = MACH_MSG_TYPE_COPY_SEND; + *oldmsgport_type = MACH_MSG_TYPE_MOVE_SEND; p->p_msgport = msgport; p->p_deadmsg = 0; -- cgit v1.2.3