diff options
Diffstat (limited to 'libmachdev')
-rw-r--r-- | libmachdev/ds_routines.c | 8 | ||||
-rw-r--r-- | libmachdev/trivfs_server.c | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c index c5a7cd00..cc99e296 100644 --- a/libmachdev/ds_routines.c +++ b/libmachdev/ds_routines.c @@ -117,9 +117,11 @@ ds_device_open (mach_port_t open_port, mach_port_t reply_port, /* Fall back to opening kernel device master */ if (err) { - get_privileged_ports(NULL, &dev_master); - err = device_open (dev_master, mode, name, devp); - *devicePoly = MACH_MSG_TYPE_MOVE_SEND; + err = get_privileged_ports(NULL, &dev_master); + if (!err) + err = device_open (dev_master, mode, name, devp); + if (!err) + *devicePoly = MACH_MSG_TYPE_MOVE_SEND; } return err; } diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c index 979741d1..9c9f817d 100644 --- a/libmachdev/trivfs_server.c +++ b/libmachdev/trivfs_server.c @@ -221,8 +221,14 @@ static void essential_task (void) { mach_port_t host, startup; + error_t err; - get_privileged_ports (&host, 0); + err = get_privileged_ports (&host, 0); + if (err) + { + mach_print ("WARNING: Cannot register as essential task\n"); + return; + } startup = file_name_lookup (_SERVERS_STARTUP, 0, 0); if (startup == MACH_PORT_NULL) { |