aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--acpi/main.c1
-rw-r--r--daemons/console-run.c1
-rw-r--r--libmachdev/ds_routines.c5
-rw-r--r--pci-arbiter/main.c1
-rw-r--r--rumpdisk/block-rump.c3
5 files changed, 10 insertions, 1 deletions
diff --git a/acpi/main.c b/acpi/main.c
index 18f0afc5..a62c0700 100644
--- a/acpi/main.c
+++ b/acpi/main.c
@@ -96,6 +96,7 @@ acpi_device_open (mach_port_t reply_port, mach_msg_type_name_t reply_port_type,
if (dev_master == MACH_PORT_NULL)
return D_NO_SUCH_DEVICE;
err = device_open (dev_master, mode, name, devp);
+ mach_port_deallocate (mach_task_self (), dev_master);
if (err)
return err;
*devicePoly = MACH_MSG_TYPE_MOVE_SEND;
diff --git a/daemons/console-run.c b/daemons/console-run.c
index eab1f51d..87fd8e9f 100644
--- a/daemons/console-run.c
+++ b/daemons/console-run.c
@@ -37,6 +37,7 @@ get_console (void)
return MACH_PORT_NULL;
err = device_open (device_master, D_WRITE | D_READ, "console", &console);
+ mach_port_deallocate (mach_task_self (), device_master);
if (err)
return MACH_PORT_NULL;
diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c
index 6555d6e9..aeb7f5af 100644
--- a/libmachdev/ds_routines.c
+++ b/libmachdev/ds_routines.c
@@ -119,7 +119,10 @@ ds_device_open (mach_port_t open_port, mach_port_t reply_port,
{
err = get_privileged_ports(NULL, &dev_master);
if (!err)
- err = device_open (dev_master, mode, name, devp);
+ {
+ err = device_open (dev_master, mode, name, devp);
+ mach_port_deallocate (mach_task_self (), dev_master);
+ }
if (!err)
*devicePoly = MACH_MSG_TYPE_MOVE_SEND;
}
diff --git a/pci-arbiter/main.c b/pci-arbiter/main.c
index 5e54b2f2..dadda0fb 100644
--- a/pci-arbiter/main.c
+++ b/pci-arbiter/main.c
@@ -80,6 +80,7 @@ pci_device_open (mach_port_t reply_port, mach_msg_type_name_t reply_port_type,
if (dev_master == MACH_PORT_NULL)
return D_NO_SUCH_DEVICE;
err = device_open (dev_master, mode, name, devp);
+ mach_port_deallocate (mach_task_self (), dev_master);
if (err)
return err;
*devicePoly = MACH_MSG_TYPE_MOVE_SEND;
diff --git a/rumpdisk/block-rump.c b/rumpdisk/block-rump.c
index 71435f20..309495dd 100644
--- a/rumpdisk/block-rump.c
+++ b/rumpdisk/block-rump.c
@@ -182,11 +182,14 @@ rumpdisk_device_init (void)
{
device_close (device);
mach_port_deallocate (mach_task_self (), device);
+ mach_port_deallocate (mach_task_self (), device_master);
fprintf(stderr, "Kernel is already driving a SATA device, skipping probing " RUMP_TYPE_STRING " disks\n");
fflush(stderr);
disabled = 1;
return;
}
+
+ mach_port_deallocate (mach_task_self (), device_master);
}
rump_init ();
}