summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
Diffstat (limited to 'boot')
-rw-r--r--boot/userland-boot.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/boot/userland-boot.c b/boot/userland-boot.c
index d048c00e..7b856147 100644
--- a/boot/userland-boot.c
+++ b/boot/userland-boot.c
@@ -90,14 +90,23 @@ boot_script_free_task (task_t task, int aborting)
int
boot_script_insert_right (struct cmd *cmd, mach_port_t port, mach_port_t *name)
{
- error_t err = mach_port_insert_right (cmd->task,
- port, port, MACH_MSG_TYPE_COPY_SEND);
+ error_t err;
+
+ *name = MACH_PORT_NULL;
+ do
+ {
+ *name += 1;
+ err = mach_port_insert_right (cmd->task,
+ *name, port, MACH_MSG_TYPE_COPY_SEND);
+ }
+ while (err == KERN_NAME_EXISTS);
+
if (err)
{
error (0, err, "%s: mach_port_insert_right", cmd->path);
return BOOT_SCRIPT_MACH_ERROR;
}
- *name = port;
+
return 0;
}