diff options
Diffstat (limited to 'boot/boot.c')
-rw-r--r-- | boot/boot.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/boot/boot.c b/boot/boot.c index db5c3964..f7c7d77f 100644 --- a/boot/boot.c +++ b/boot/boot.c @@ -1942,6 +1942,7 @@ S_mach_notify_new_task (mach_port_t notify, goto fail; assert (! MACH_PORT_VALID (previous)); + mach_port_mod_refs (mach_task_self (), task, MACH_PORT_RIGHT_SEND, +1); err = hurd_ihash_add (&task_ihash, (hurd_ihash_key_t) task, (hurd_ihash_value_t) task); if (err) @@ -1951,9 +1952,10 @@ S_mach_notify_new_task (mach_port_t notify, } if (MACH_PORT_VALID (new_task_notification)) - /* Relay the notification. */ - mach_notify_new_task (new_task_notification, task, parent); + /* Relay the notification. This consumes task and parent. */ + return mach_notify_new_task (new_task_notification, task, parent); + mach_port_deallocate (mach_task_self (), task); mach_port_deallocate (mach_task_self (), parent); return 0; |