From dd2b22a787420e4b9d74e2778961b14f59293c91 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Fri, 26 Sep 2014 17:24:00 +0200 Subject: kern: create send rights as they are inserted at bootstrap time Previously, it was impossible to hand e.g. the master device port to more than one bootstrap task. Fix this by creating the send right as it is inserted into the target task. * kern/bootstrap.c (bootstrap_create): Do not create the send rights here... (boot_script_insert_right): ... but here. --- kern/bootstrap.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kern/bootstrap.c b/kern/bootstrap.c index d919e90..4edae7b 100644 --- a/kern/bootstrap.c +++ b/kern/bootstrap.c @@ -155,13 +155,13 @@ void bootstrap_create(void) /* Initialize boot script variables. We leak these send rights. */ losers = boot_script_set_variable ("host-port", VAL_PORT, - (long)ipc_port_make_send(realhost.host_priv_self)); + (long) realhost.host_priv_self); if (losers) panic ("cannot set boot-script variable host-port: %s", boot_script_error_string (losers)); losers = boot_script_set_variable ("device-port", VAL_PORT, - (long) ipc_port_make_send(master_device_port)); + (long) master_device_port); if (losers) panic ("cannot set boot-script variable device-port: %s", boot_script_error_string (losers)); @@ -838,7 +838,8 @@ 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) { - *name = task_insert_send_right (cmd->task, (ipc_port_t)port); + *name = task_insert_send_right (cmd->task, + ipc_port_make_send((ipc_port_t) port)); return 0; } -- cgit v1.2.3